2012-10-01 32 views
6

一個簡單的C#代碼表達始終是在C#中真正

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

注意它並不是說'result'始終爲真 - 它說'result_ _in Console.WriteLine(result)__永遠爲真 –

+0

你不需要'&& result'。只要將其從你的狀況中刪除。 –

+0

@羅伯特哈維,你錯了。如果結果爲真,我只想顯示控制檯 – Alexandre

回答

22

這是由於&& result部分 - 如果result爲真,您只能進入聲明正文。你如何預計resultfalse

+1

不斷重複蓋帽必須是一個真正的無賴。 :) –

4

什麼Reharper告訴你的是,如果你正在做

Console.WriteLine(result); 

你不妨做

Console.WriteLine(true); 

也就是說,任何地方,你使用中如果你能以及結果使用true,因爲如果result是假的,那麼你不會達到if的主體。

+2

換句話說,無意義的陳述是毫無意義的。 –

2

因爲if(true && false)(這就是你得到的,當你解析解析)永遠不會進入if體。那就是你在第一個例子中解析的內容。