C#的访问修饰符
修饰符 | 含义 |
---|---|
private | 只能在当前类中访问 |
public | 同一程序集(DLL或EXE)中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。 |
protected | 只有同一类或结构或者此类的派生类中的代码才可以访问该类型或成员。 |
internal | 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以访问,不写默认就是internal |
protected internal | 类只能在当前项目中访问,不能被继承,只能实例化 |
类的声明修饰符
- abstract
使用abstract修饰的类为抽象类,抽象类只能是其他类的基类,不能与sealed、static一起使用。
abstract可以修饰抽象类中的方法或属性,此时,方法或属性不能包含实现,且访问级别不能为私有。
抽象类不能被实例化。
sealed
使用sealed修饰的类为密封类,密封类无法被继承,不能和abstract、static一起使用。
当sealed用于方法或属性时,必须始终与override一起使用。static
使用static修饰的类为静态类,静态类所有成员都必须是静态的,不能与abstract、sealed一起使用。
static可以修饰方法、字段、属性或事件,始终通过类名而不是实例名称访问静态成员,静态字段只有一个副本。
静态类不能被实例化。
const
使用const关键字来声明某个常量字段或常量局部变量,必须在声明常量时赋初值。
不能与static一起使用,常量默认是static的,常量字段只有一个副本。
readonly
使用readonly关键字来声明只读字段。
只读字段可以在声明或构造函数中初始化,每个类或结构的实例都有一个独立的副本。
可以与static一起使用,声明静态只读字段。
静态只读字段可以在声明或静态构造函数中初始化,静态常量字段只有一个副本。virtual
virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。
默认情况下,方法是非虚拟的。 不能重写非虚方法。
virtual修饰符不能与static、abstract、private或override修饰符一起使用。override
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用override修饰符。
重写的成员必须是virtual、abstract或override的。注意点:
一个成员或类型只能有一个访问级别。