for 루프 내에 할당해야하는 몇 가지 변수가 있습니다. 분명히 루프가 종료 될 때 C#은 그곳에서 일어난 일을 무시하고 변수는 원래 상태로 돌아갑니다. 구체적으로 말하면 목록의 마지막 요소와 마지막 요소가 필요합니다. 코드는 다음과 같습니다.C#의 로컬 변수 문제
int temp1, temp2;
for (int i = 0; i < toReturn.Count; i++) {
if (i == toReturn.Count - 2) { // Next-to-last element
temp1 = toReturn[i];
} else if (i == toReturn.Count - 1) { // Last element
temp2 = toReturn[i];
}
}
// At this point, temp1 and temp2 are treated as uninitialized
참고 : 잘못된 변수 이름은 절대로 임시 변수입니다. 더 복잡한 것은 모든 것을 혼란스럽게합니다.
자,이 문제를 해결하기위한 두 가지 방법이 있습니다 : 하나는 루프가 종료 된 후에 변수를 살리는 방법을 찾고, 다른 하나는 할 수있는 Python과 같은 것을 수행하는 것입니다. temp = my_list[-1]
리스트의 마지막 요소를 얻는다. C#에서는 이러한 것들이 가능합니까?
편집 : 컴파일하려고하면 "할당되지 않은 로컬 변수 'temp1'사용 오류가 발생합니다. 이 코드는 실행되지 않으며, 결코 호출되지 않는 메소드 안에 있습니다. 이 방법이 도움이된다면 다른 루프에서 변수를 사용하려고합니다.
컴파일러에서 temp1 및 t emp2가 초기화되지 않았습니까? 또는 그들은 설정되어야하지만 결코 존재하지 않는다 (관찰 가능한 가치는 초기화되지 않는다)? – Michael
C#에서는 변수가 루프 후에 원래 상태로 돌아 가지 않습니다. 변수가 루프 내에서 작성되지 않은 한 루프 내에서 설정된 값을 유지합니다. –