C# local variable scope
c#
Solution
Yes, this is how C# works.
When declaring a scope, any local variable from an outer scope is also known - there is no way to qualify that a local variable within the scope should override the local variable from outside.
Problem
Possible Duplicate: confused with the scope in c# It appears that in C# a variable defined with the local scope to if/else/loop block is conflicting with variable defined outside following that block - see code snipped. An equivalent code compiles fine under C/C++ and Java. Is this expected behavior in 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 */ } ```