public :访问不受限制。
protected :访问仅限于包含类或从包含类派生的类型。
Internal :访问仅限于当前程序集。
protected internal:访问限制到当前程序集或从包含派生的类型的类别。
private :访问仅限于包含类型。
abstract:抽象类不能实例化
抽象类可以包含抽象方法和抽象访问器
不能用 sealed(C# 参考) 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。
采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承
从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现
方法:抽象方法是隐式的虚方法
只允许在抽象类中使用抽象方法声明
因为抽象方法声明不提供实际的实现,所以没有方法体;
方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })
属性:在静态属性上使用 abstract 修饰符是错误的
在派生类中,通过包括使用 override 修饰符的属性声明,可以重写抽象的继承属性
抽象类必须为所有接口成员提供实现
实现接口的抽象类可以将接口方法映射到抽象方法上
async:将方法、lambda 表达式或匿名方法指定为异步
不包含 await 表达式或语句,则该方法将同步执行
const :指定字段或局部变量的值是常数,不能被修改
常数表达式是在编译时可被完全计算的表达式
只能是 string 和 null
不允许在常数声明中使用 static 修饰符
常数可以参与常数表达式
const 字段只能在该字段的声明中初始化
readonly 字段可以在声明或构造函数中初始化
const 字段只能在该字段的声明中初始化
readonly 字段可以在声明或构造函数中初始化
const 字段是编译时常数
readonly 字段可用于运行时常数
const 默认就是静态的
readonly 如果设置成静态的就必须显示声明
const 对于引用类型的常数,可能的值只能是 string 和 null
readonly可以是任何类型
event:用于在发行者类中声明事件
static:即使类没有实例,调用方也能在任何时候使用该事件
virtual:允许派生类通过使用 override 关键字来重写事件行为
sealed:指定对于派生类它不再属虚拟性质
abstract:编译器不会生成 add 和 remove 事件访问器块,因此派生类必须提供自己的实现
extern:用于声明在外部实现的方法
extern 关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本
in :指定该类型参数是逆变的
可以在泛型接口和委托中使用 in 关键字