C# 访问修饰符
- public:最高访问级别,访问不受限制;
- protected:保护级别,只能自身以及派生类可以访问;
- internal:内部访问级别,只有是在同一程序集中才能访问;
- protected internal:内部保护级别,访问仅限于当前程序集或自身以及派生类访问;
- private:私有级别,最低访问级别,只能自身内部访问;
访问级别 | 类内部 | 派生类 | 程序集内 | 程序集外 |
默认 | ✔ | |||
public | ✔ | ✔ | ✔ | ✔ |
protected | ✔ | ✔ | ||
internal | ✔ | ✔ | ✔ | |
protected internal | ✔ | ✔ | ✔ | |
private | ✔ |
注意点
- 定义类变量、方法是,如果不写访问修饰符,默认为private;
- 定义类时,如果不写访问修饰符,则默认为internal;
- 声明枚举类型以及接口类型,如果不加访问修饰符,则默认为public;
- 在CRL中,从基类派生时,允许放宽但不允许收紧成员的可访问级别(之所以不能收紧对基类方法的访问,是因为CLR可以使得派生类转换为基类,并获取对基类方法的访问权),但是在C#中,原始成员和重写成员具有相同的访问级别;
- 基类的访问级别必须高于或者等于派生类的访问级别