C# 访问修饰符

1、C#类及类型成员的修饰符有以下四种类型

  public、private、protected、internal

2、以上四种修饰符可以组成五种可访问性  

public  

官方说明:同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。

简单说明:官方为了说明范围写了一大串,其实意思就是没有任何访问限制  

private  

官方说明:只有同一类或结构中的代码可以访问该类型或成员  

简单说明:除了修饰的类,其它外部程序都不能访问该类的成员  

protected  

官方说明:只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员  

简单说明:只能是所修饰的类以及它的子类可以访问  

internal  

官方说明:同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以  

简单说明:除本程序集意外的代码休想访问该类  

注意:程序集则是指我们编译后生成的dll以及exe文件  

protected internal  

官方说明:由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。  

简单说明:官方说明读起来有点拗口,其实就是protected和internal的并集,注意是or而不是and。

3、修饰符的特殊情况

 大家知道,我们所编写的类或属性可以选择用哪一种修饰符来标明自己,但同时修饰符也是要选择它要选择的对象。  这里我们将我们要修饰的对象分为类型以及类型的成员,我们可以理解为,一个命名空间下的顶级类和这个类的所有成员,该成员也可以是一个class但此时它只能被看做是顶级类的成员。

 刚入门的新手可能会认为这四种修饰符可以修饰任何想要修饰的类型,其实不然,这里指的特殊情况就是,顶级类只能被public和internal所修饰。

4、默认修饰符

 众所周知,我们声明的类和类成员可以不写访问修饰符的,这时它们的访问性就是.net默认设置的,从我们刚才说的第3点可以延伸出这里的知识点,作为类型(也就是命名空间下的顶级类)它只能被public和internal所修饰,本着对所修饰的类的保护原则.net会默认给它可访问性最小的修饰符,public>internal,所以顶级类的默认修饰符则是internal;  同理,如果是类型的成员变量,按着保护原则选择最小的访问性,public>internal>protected>private,于是成员变量的默认修饰符则是private。

这里也要除了Interface(接口)和Enum(枚举),它们的成员只能是Public,而且还不能显示指定public.  

构造函数默认是Public,因为要让类在其他地方能实例化,析构函数默认Private,不能显示指定。

结构成员无法声明为受保护成员,因为结构不支持继承。

5、可访问性规则  

派生类的可访问性不能高于其基类型。

本次C#修饰符学习到此,下一节将学习如何通过指定友元程序集,使其他某些程序集能够访问您的内部类型

posted @ 2013-12-08 00:44  迷你云  阅读(226)  评论(0)    收藏  举报