17.C#编程指南-访问修饰符
public
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
private
只有同一类或结构中的代码可以访问该类型或成员。
protected
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
internal
同一程序何中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
protected internal
受保护内部可访问性级别的意思是受保护“或”内部,而不是受保护“和”内部。 换句话说,可以从同一程序集内的任何类(包括派生类)中访问受保护的内部成员。 若要限制为只有同一程序集内的派生类可以访问,请将类本身声明为内部,并将其成员声明为受保护。
类和结构的可访问性
直接在命名空间中声明的类和结构(即,没有嵌套在其他类或结构中的类和结构)可以是公共类和结构,也可以是内部类和结构。如果不指定访问修饰符,则默认为internal。
结构成员,包括嵌套的类和结构,可以声明为公共的、内部的或私人的。
类成员,包括嵌套的类和结构,可以为公共的、受保护的内部、受保护的、内部的或私有的。
类成员和结构成员的访问级别,包括嵌套类和结构,默认为private。
派生类的可访问性不能高于其基类型。 换句话说,不能有从内部类 A 派生的公共类 B。 如果允许这种情况,将会使 A 成为公共类,因为 A 的所有受保护的成员或内部成员都可以从派生类访问。
类成员和结构成员的可访问性
结构成员无法声明为受保护成员,因为结构不支持继承。
用户定义的运算符必须始终声明为公共运算符。
析构函数不能具有可访问性修饰符。
直接用命名空间声明时,可以将接口声明为公共接口或内部接口,只与类和结构一样,接口默认具有内部可访问性。 接口成员始终是公共成员,因为接口的用途是让其他类型能够访问某个类或结构。 访问修饰符不能应用于接口成员。
枚举成员始终是公共的,不能应用任何访问修饰符。
委托行为类似于类和结构。 默认情况下,它们在命名空间中直接声明时具有内部访问权,在嵌套时具有私有访问权。