C#外部类、内部类(嵌套类)之间的成员访问特点

最近程序中需要用到多线程工作下的单例模式。而其多种实现方法中,利用内部类实现懒汉模式是一种值得推荐的方式。顺便也就对内部类和外部类之间的关系做了一下研究,总结如下(理解不困难,不粘贴代码了,有需要的留言,我再做个demo)。

  1. static成员与非static成员的访问:无论是外部类访问内部类的静态成员(变量和函数等),还是内部类访问外部类的静态成员,都不能用实例访问,必须用类本身访问;相应地,访问对方的非静态成员,则必须用实例访问。这与两个普通类之间的相互访问对方的static or non-static成员的方法是一致的。
  2. 关于访问限制:内部类可以访问外部类的任何访问级别的成员(public, internal, protected, private);而外部类只能访问内部类的public 或者internal级别的成员,不能访问内部类protectedprivate级别的成员。
  3. 关于调用方法:外部类调用内部类静态成员时,必须用“类名.成员名”的格式。内部类调用外部类成员时,如果内部类没有该外部类成员的同名成员,可以直接用“成员名”访问(也可以用“外部类.成员名”格式访问);如果内部类中定义了与外部类成员同名的成员,则内部类中方位外部类成员时,需要用"类名.成员名"的方式。
  4. 关于外部类的外部(其它类)访问内部类,这与访问一个普通类的方法相同,访问限制也相同,所不过类名是“外部类.内部类”。
原文地址:https://www.cnblogs.com/myseasky/p/5552594.html