2012-06-17 4 views
0
int x; 
    if (Q()) 
     x = 123; 
    if (R()) 
     Console.WriteLine(x); // illegal 

    int x; 
    if (Q()) 
     x = 123; 
    if (false) 
     Console.WriteLine(x); // legal!! 

이전에 '할당되지 않은 지역 변수 사용'컴파일 타임 예외가 발생하는 이유는 두 번째 이유가 무엇인지 알 수 있습니까?할당되지 않은 지역 변수 미스테리

+0

if (false)로 인해 컴파일러에서 두 번째 코드에 도달 할 수 없기 때문에. 컴파일러는 이것에 대해 경고를 던질 것이다. –

+5

블로그 게시물에서 코드를 복사했지만 설명을 복사하지 않았습니다. http://blogs.msdn.com/b/ericlippert/archive/2012/03/05/why-are-local-variables-definitely-assigned -in-unreachable-statements.aspx –

답변

2

아래에있는 명령문의 if 조건은 실행되지 않으므로 사용하지 않는 변수의 제약 조건이 적용되지 않습니다.

if (false) 
     Console.WriteLine(x); // legal!! 
1

두 번째 컴파일러는 절대로 실행되지 않으므로 제거됩니다.

1

Q() == FALSE이고 R() == true이면 x가 설정되지 않고 사용하려고 시도합니다.

+1

그 이유는 첫 번째 오류가 왜 발생하는지, 두 번째 오류는 왜 발생하지 않는지에 대한 설명입니다. – Guffa

관련 문제