2012-10-01 5 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'는 항상 true라는 말은하지 않습니다.'result'라고합니다. Console.WriteLine (result) __은 항상 true입니다. –

+0

당신은'&& result'가 필요 없습니다. 당신의 상태에서 그것을 제거하십시오. –

+0

@ 로버트 하비, 틀렸어. 결과가 사실 일 때만 콘솔을 보여주고 싶습니다. – Alexandre

답변

22

&& result 부분으로 인해 발생합니다. result이 true 인 경우 진술 본문에만 들어갑니다. resultfalse 인 경우 어떻게 될 것으로 예상됩니까? Reharper 당신을 말하고 무엇

+1

끊임없이 rep-capped되는 것은 정말 실망스러운 것이어야합니다. :) –

4

Console.WriteLine(result); 

을하고 있다면 당신은뿐만 아니라 어디서든 당신은 당신이 할 수있는, 경우뿐만 아니라 내 결과를 사용, 즉

Console.WriteLine(true); 

을 할 수 있다는 것입니다 true를 사용하십시오. result이 거짓이면 if의 본문에 도달하지 않았을 것입니다.

+2

의미없는 진술은 의미가 없습니다. –

2

왜냐하면 if(true && false) (파싱을 해결할 때 얻은 내용)은 절대로 if 본문에 들어 가지 않기 때문입니다. 첫 번째 예제에서 파싱 할 내용입니다.