2011-03-08 4 views
1

다음 코드가 정확합니까?C# : 루프 내부의 변수 선언

foreach (int i in MyList) 
{ 
    MyObject m; 
} 

변수를 두 번 이상 선언 할 수 있습니까?

+3

"두 번 이상"을 정의하십시오. 함수 내에 있지 않은 경우에 정의 할 수 있습니다. 로컬 스코프를 사용하면 (자) 글로벌 스코프를 오버라이드 (override) 할 수 있습니다. 그러나,'MyObject myObj; for (...) {MyObject myObj}'는 작동하지 않습니다. –

답변

2

두 번 이상 선언하지 않았습니다. 변수에는 "범위"가 있으며 m 변수의 범위는 다음 반복 전에 } 끝에서 끝납니다.

+2

앞서 12 초! StackOverflow는 실제로 필자의 타이핑 속도를 극복하도록 강요했습니다! –

+0

+1은 스코프를 언급합니다. 나는 또한 같은 줄에 답하고 있었다. – Pradeep

-1

루프 내에서 변수를 선언 할 수 있습니다. 루프 내부에서만 필요하면 코드 가독성을 위해 바람직합니다. 성능에 해를 미칠 수는 있지만 문제의 변수가 선언하고 인스턴스화하는 데 많은 비용이 들거나 목록이 너무 많으면 걱정할 필요가 있습니다.

+1

동일한 의미론을 가진 두 개의 루프, 문제의 변수가 루프 내부에서 선언 된 루프 및 루프 외부에서 선언 된 루프가 있고 두 루프간에 성능이 현저하게 다릅니다. – jason

+0

@ Jason - 그래서 성능 문제를 언급했습니다. 루프 내에서 변수를 선언하면 * 실제 세계에서 성능에 대한 우려가있는 경우 사소한 루프를 반복해야하는 반복 횟수를 알려줄 수 있습니다. – jlnorsworthy

+0

@jlnorsworthy : 잠깐, 당신은 성능에 해로울 수 있다고 말한 사람입니다. 제 주장은 그렇지 않다는 것입니다. 나는 당신이 나를 잘못 증명할 수 있도록 도전하고 있습니다. – jason

0

예.

내 C#을 올바르게 기억하면 실행될 때 한 번만 선언되지만 변수의 끝까지 (각 루프의 끝이 아님) 다시 사용됩니다.