c#中的五种访问修饰符
- public,private,protected,internal,protected internal
访问修饰符 说明
public 公有访问,不受任何限制。
private 私有访问,只限于本类成员访问,子类、实例都不能访问。
protected 保护访问,只限于本类和子类访问,实例不能访问。
internal 内部访问,只限于本项目内访问,其他不能访问。
protected internal 内部保护访问,只限于本项目或者子类访问,其他不能访问。
**补充
- protected internal 在现版本的编程使用较少,它是将保护访问与内部访问结合起来形成的一种内部保护访问。
直接在命名空间中声明的类和结构(即:没有嵌套在其他类或结构中的类和结构)可以是公共类和结构,也可以是内部类和结构。如果不指定访问修饰符,则默认为 internal。
派生类的可访问性不能高于其基类型。换句话说,不能有从内部类A派生的公共类B。 如果允许这种情况,将会使A成为公共类,因为A的所有受保护的成员或内部成员都可以从派生类访问。
结构成员,包括嵌套的类和结构,可以声明为公共的、 内部的,或私有的。 类成员(包括嵌套的类和结构)可以为公共的、受保护的内部、受保护的、内部的或私有的。 类成员和结构成员的访问级别,包括嵌套类和结构,默认为私有。 不可以从包含类型之外访问私有嵌套类型。
1、C#中方法、类等的默认访问修饰符
接口(interface)
接口成员访问修饰符默认为public,且不能显示使用访问修饰符。
类(class)
构造函数默认为public访问修饰符。析构函数不能显示使用访问修饰符且默认为private访问修饰符。类的成员默认访问修饰符为private。
枚举(enum)
枚举类型成员默认为public访问修饰符,且不能显示使用修饰符。
结构(struct)
结构成员默认为private修饰符。结构成员无法声明为protected成员,因为结构不支持继承。
嵌套类型
嵌套类型的默认访问修饰符为private。 和类,结构的成员默认访问类型一致。
2、成员类型的可修饰,及其默认(即如果不指定)修饰符
成员类型 默认修饰符 可被修饰符
enum public none
class private public、protected、internal、private、protected internal
interface public none
struct private public、internal、private
3、接口成员、枚举成员、 委托行为
接口成员始终是公共成员,因为接口的用途是让其他类型能够访问某个类或结构。访问修饰符不能应用于接口成员。
枚举成员始终是公共的,不能应用任何访问修饰符。
委托行为类似于类和结构。默认情况下,它们在命名空间中直接声明时具有内部访问权,在嵌套时具有私有访问权。