重複の可能性:
c#のスコープと混同されています
C#では、if / else / loopブロックのローカルスコープで定義された変数が、そのブロックの後に外部で定義された変数と競合しているようです。コードの切り取りを参照してください。同等のコードは、C /C++およびJavaで正常にコンパイルされます。これはC#で予想される動作ですか?
public void f(){
if (true) {
/* local if scope */
int a = 1;
System.Console.WriteLine(a);
} else {
/* does not conflict with local from the same if/else */
int a = 2;
System.Console.WriteLine(a);
}
if (true) {
/* does not conflict with local from the different if */
int a = 3;
System.Console.WriteLine(a);
}
/* doing this:
* int a = 5;
* results in: Error 1 A local variable named 'a' cannot be declared in this scope
* because it would give a different meaning to 'a', which is already used in a
* 'child' scope to denote something else
* Which suggests (IMHO incorrectly) that variable 'a' is visible in this scope
*/
/* doing this:
* System.Console.WriteLine(a);
* results in: Error 1 The name 'a' does not exist in the current context..
* Which correctly indicates that variable 'a' is not visible in this scope
*/
}