2012-10-01 4 views
6

簡単な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); 
    } 

C#で、常に真であるReSharperのはConsole.WriteLine(result)の結果は常にtrueであることを述べています。どうして?

+2

「結果」は常に真であるとは言いませんが、「結果」と表示されます__in Console.WriteLine(結果)__は常に真です –

+0

あなたは '&& result'は必要ありません。ただあなたの状態からそれを削除します。 –

+0

@Robert Harvey、あなたは間違っています。結果が真である場合にのみコンソールを表示したい – Alexandre

答えて

22

これは&& resultの部分に起因しています。resultが真の場合、文の本文に入ることがあります。 resultfalseの場合、どのようにそこに入ることができますか? Reharperがあなたを語っている何

+1

絶えずrep-cappedされていることは、本当のバマーでなければなりません。 :) –

4

あなたは

Console.WriteLine(result); 

を行っている場合は、同様

場合は、あなたにもできる以内に、どこでもあなたが結果を使用されて
Console.WriteLine(true); 

を行う可能性があります、ということですtrueを使用してください。resultがfalseの場合、ifの本体には到達しませんでした。

+2

無意味なステートメントは意味がない、言い換えれば。 –

2

if(true && false)(解析したときに得られるもの)は、if本体に入力されないためです。これは最初の例で解析しているものです。

関連する問題