再论访问修饰符

前言:

   今天又见到了老问题,在C#中访问修饰符的作用范围有哪些? 我的回答是:

i)当修饰类中成员函数时:

  • private :只能被类中使用;
  • public :能够在类内部以及类外部使用;
  • protected :可以在类内部及派生类中使用,雷同于private;
  • internal :可以在程序集中使用,雷同于public ;

ii)当修饰类时:

  • public :可以在类外,进行类的实例化;
  • private :不可以在类外进行对象实例化;

特别是对修饰类时的访问修饰符用法,不甚清楚。经过进一步的调试、及网上查阅,基本厘清,在此详细列举。

 

访问修饰符细分:

   将就private ,public ,protected ,internal ,protected internal进行分析:


当修饰类中字段、成员函数时

  • private :只能被类内部使用;
  • public :能够在类内部及外部访问;
  • protected :能够在类内部、即派生类中访问。其功能相似于private ,可认为是其延展;
  • internal :能够在程序集内部使用,其功能相似于public ,可认为是其压缩;ex,同一项目的控制台程序,在主类上加一类,其中包含internal 时,在主函数中的实例化对象,其可以访问internal 成员。而若在另加项目的类库中实现类,则主函数中无法访问internal 成员;
  •  protected internal :能够在类内部、派生类以及程序集中被访问;
  默认情况下,其为private 类型。

当修饰类时: 

     类型的定义只能是internalpublic 类型的。 其余的protected ,private和protected internal 类型对于包含在命名空间中的类型来说都是没有意义的。

  • internal :在程序集内部可以对类实例化 。ex,主函数上的internal 类,可以在主函数中加以使用。而在另加项目类库中实现的internal类,则主函数中,无法使用。即,不可访问;
  • public :在程序及内、外都可以对其访问。

  默认情况下,其为internal 类型。

 

    综述之,通过对访问修饰符的进一步细分、分析,理清了以前的混淆之处。呵呵~

posted @ 2010-03-15 20:38  Youngman  阅读(228)  评论(0编辑  收藏  举报