ECMA-334: 10.7.1.1 Hiding through nesting
Microsoft .NET Framework, ASP.NET, Visual C# (CSharp, C Sharp, C-Sharp) Developer Training, Visual Studio
| C# Language Specification |
|
| © 2006 ECMA International |
10.7.1.1 Hiding through nesting
Name hiding through nesting can occur as a result of nesting namespaces or types within namespaces, as a result of nesting types within classes or structs, and as a result of parameter, local variable, and local constant declarations. [Example: In the following code
class A { int i = 0; void F() { int i = 1; } void G() { i = 1; } }
within the F method, the instance variable i is hidden by the local variable i, but within the G method, i still
refers to the instance variable. end example]
When a name in an inner scope hides a name in an outer scope, it hides all overloaded occurrences of that name. [Example: In the following code
class Outer { static void F(int i) {} static void F(string s) {} class Inner { void G() { F(1); // Invokes Outer.Inner.F F("Hello"); // Error } static void F(long l) {} } }
the call F(1) invokes the F declared in Inner because all outer occurrences of F are hidden by the inner
declaration. For the same reason, the call F("Hello") results in a compile-time error. end example]