2012-10-01 12 views
6

एक साधारण सी # कोडअभिव्यक्ति हमेशा सी # में सच है

bool result; 
    if (bool.TryParse("false", out result) && result) 
    { 
     Console.WriteLine(result); 
    } 

और

bool result; 
    if (bool.TryParse("tRue", out result) && result) 
    { 
     Console.WriteLine(result); 
    } 

Resharper का कहना है कि Console.WriteLine(result) में परिणाम हमेशा true है। क्यूं कर?

+2

ध्यान दें कि यह नहीं कहता कि 'परिणाम' हमेशा सत्य है - यह कहता है' परिणाम '__in कंसोल। राइटलाइन (परिणाम) __ हमेशा सत्य है –

+0

आपको' && result 'की आवश्यकता नहीं है। बस इसे अपनी हालत से हटा दें। –

+0

@ रॉबर्ट हार्वे, आप गलत हैं। मैं केवल कंसोल दिखाना चाहता हूं अगर परिणाम सही है – Alexandre

उत्तर

22

यह && result भाग के कारण है - यदि आप result सत्य हैं तो आप केवल कथन के शरीर में ही पहुंच जाएंगे। resultfalse होने पर आप वहां पहुंचने का कोई तरीका कैसे उम्मीद करते हैं?

+1

लगातार rep-capped होने के नाते एक असली बमर होना चाहिए। :) –

4

क्या Reharper आपको बता रहा है कि, अगर आप

Console.WriteLine(result); 

कर रहे हैं आप के रूप में अच्छी तरह से

Console.WriteLine(true); 

कर सकता है, कहीं भी आप के भीतर अगर, आप कर सकते हैं और साथ ही परिणाम का उपयोग है सही उपयोग करें, जैसे, result झूठे थे, तो आप if के शरीर तक नहीं पहुंच पाएंगे।

+2

अर्थहीन बयान अर्थहीन है, दूसरे शब्दों में। –

2

क्योंकि if(true && false) (जो आपको मिलता है, जब आप पार्सिंग को हल करते हैं) तब कभी भी शरीर में प्रवेश नहीं करेगा। जो कुछ आप पहले उदाहरण में पार्स कर रहे हैं वह है।

संबंधित मुद्दे