C#几种修饰符
大家好,我把各种修饰符总结一下,和大家分享一下,希望大家喜欢
1.什么是修饰符?http://s.click.taobao.com/t_8?e=7HZ5x%2BOzdswsVvyc5Jts79Au1Q%3D%3D&p=mm_24156262_0_0
答:修饰符用于修改类型和类型成员的声明。
修饰符 |
用途 |
Public 关键字是类型和类型成员的访问修饰符。 公共访问是允许的最高访问级别。 对访问公共成员没有限制。 Private 关键字是一个成员访问修饰符。 私有访问是允许的最低访问级别。 私有成员只有在声明它们的类和结构体中才是可访问的。 Internal关键字是类型和类型成员的访问修饰符。 只有在同一程序集的文件中,内部类型或成员才是可访问的。 Protected 关键字是一个成员访问修饰符。 受保护成员在其所在的类中可由派生类实例访问。 |
指定声明的类型和类型成员的可访问性
|
Abstract修饰符指示所修饰的内容缺少实现或未完全实现。 abstract 修饰符可用于类、方法、属性、索引器和事件。 在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。 标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现 |
指示某个类只能是其他类的基类 |
const关键字用于修改字段或局部变量的声明。 它指定字段或局部变量的值是常数,不能被修改 |
指定无法修改字段或局部变量的值 |
extern 修饰符用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用。 在这种情况下,还必须将方法声明为 static |
指示在外部实现方法。 |
Event |
声明事件。 |
new 运算符 :用于创建对象和调用构造函数。 new 修饰符 可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。 如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。 若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员。 new 约束 new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。 如果要使用 new 约束,则该类型不能为抽象类型。
Override要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符 |
从基类成员隐藏继承的成员。
提供从基类继承的虚拟成员的新实现。 |
partial |
在整个同一程序集中定义分部类、结构和方法。 |
声明一个字段,该字段只能赋值为该声明的一部分或者在同一个类的构造函数中 |
|
密封类指定类不能被继承。 |
|
声明属于类型本身而不是属于特定对象的成员 |
|
声明不安全的上下文 http://s.click.taobao.com/t_8?e=7HZ5x%2BOzdswsVvyc5Jts79Au1Q%3D%3D&p=mm_24156262_0_0 |
|
virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写,除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样, virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用。 |
在派生类中声明其实现可由重写成员更改的方法或访问器。
|
olatile |
指示字段可由操作系统、硬件或并发执行线程等在程序中进行修改 |
http://s.click.taobao.com/t_8?e=7HZ5x%2BOzdswsVvyc5Jts79Au1Q%3D%3D&p=mm_24156262_0_0
注意:http://s.click.taobao.com/t_8?e=7HZ5x%2BOzdswsVvyc5Jts79Au1Q%3D%3D&p=mm_24156262_0_0
readonly 关键字与 const 关键字不同。 const 字段只能在该字段的声明中初始化。 readonly 字段可以在声明或构造函数中初始化。 因此,根据所使用的构造函数,readonly 字段可能具有不同的值。 另外,虽然 const 字段是编译时常量,但 readonly 字段可用于运行时常量,如此行所示:public static readonly uint l1 = (uint)DateTime.Now.Ticks;
对同一成员同时使用 new 和 override 是错误的做法,因为这两个修饰符的含义互斥。 new 修饰符会用同样的名称创建一个新成员并使原始成员变为隐藏的。 override 修饰符会扩展继承成员的实现。
http://s.click.taobao.com/t_8?e=7HZ5x%2BOzdswsVvyc5Jts79Au1Q%3D%3D&p=mm_24156262_0_0