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


Jump to: navigation, search
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]


Today's Deals: Electronics

Personal tools