2013-04-03 2 views
1

C# 숙제 문제 : gettingsetting으로 운동을 수행하고 변수를 매우 복잡한 방식으로 액세스합니다. 가져 오기 및 설정이 변수 할당에 어떤 영향을 줍니까?

public String Result 
{ 
    get { return userMessage; } 
} 

가 .. 그 다음 메시지를 출력 ...

if (condition a) 
{String userMessage = "foo";} 
else if (condition b) 
{String userMessage = "bar";} 
...etc. 

I의 userMessage 변수에 액세스하는 getter 사용하고 :

는 I는 if...then 루프에 의해 생성되는 사용자 메시지를 콘솔에.

Console.WriteLine(thegame.Result); 

내가 비주얼 스튜디오 2010에서 정보 메시지를 수신하고있어 그 내가 String userMessage =...., Warning 5 The variable 'userMessage' is assigned but its value is never used에 값을 할당하고있는 네 개의 라인.

변수에 액세스하는 로터리 방식으로 인해이 메시지가 수신 되었습니까? 또는 더 큰 문제의 징후입니까? 온라인에서 메시지에 대한 모든 참조는 결코 사용되지 않는 변수를 선언하는 컨텍스트에 있습니다 ... 그러나이 경우에는 userMessage 변수를 사용하고 있습니다. 오류의 원인은 무엇입니까?

+2

범위를 확인하십시오. if 문 내부에 새 변수를 계속 선언합니다. 코드 블록 {}을 떠나면 변수가 사라지고 이러한 경우에는 사용되지 않습니다. – dbugger

답변

2

당신은 조건의 범위에서 변수를 선언하고 있습니다 :

string userMessage; // class scope 


... 

if (condition) { 
    String userMessage = "blah"; // only available until the closing brace 
} // out of scope here 

는 그래서는 경고입니다. 한 줄로만 범위가 지정되었지만 결코 사용하지 않는 변수를 만들고 있습니다.

1

변수를 if 블록에 userMessage이라는 변수로 정의했기 때문입니다. String 수식어를 if 블록에서 꺼내면됩니다.

2
if (condition a) 
{userMessage = "foo";} 
else if (condition b) 
{userMessage = "bar";} 
...etc. 

왜냐하면 모든 조건에서 다른 변수를 정의하기 때문입니다.