const : 指定字段或者本地变量不能被修改。
readonly : 声明一个字段只能在定义的时候赋值或者在构造函数中赋值。
( readonly 可以有不同的值,取决于构造函数的值。 const 是一个编译时的常量,readonly是一个运行时的常量,example:
public static readonly unit l1 = (uint) DateTime.Now.Ticks; )
event : 指定一个事件
(用于创建或者标识一个托管, 必须用+=或者-=对托管进行操作)
extern : 表明方法是在外部实现的, 特别是用其它语言实现的, 它没有具体实现。
它一般与DllImport 属性联用,但用DllImport时,方法申明必须为static的。
(public static extern int MyMethod(int x); )
(
[DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type);
)
sealed : 声明一个类不能被继承。
( 结构体是隐性的sealed, 因而,它不能被继承 )
unsafe : 声明一段不安全的内容。要编译不安全的代码,必须加 /unsafe 编译选项。
( 它表示一段不安全的内容,可以进行指针的操作)
( unsafe static void FastCopy(byte[] src, byte[] dst, int count ) {} )
它可以这样用:unsafe static void FastCopy( byte *ps, byte *pd, int count) {}
unsafe static void SquarePtrParam(int *p)
{
*p *= *p;
}
unsafe public static void Main()
int i = 5;
SquarePtrParam(&i);
Console.WriteLine(i);
volatile : 表明一个字段可以被操作系统,硬件,或者并发的线程修改
当系统用到该值时,系统总是读volatile的对象中的值。尽管它可能前面用到过,不会缓存起来。
它经常被用在多线程在没有用到lock的时候访问。它保证每个线程读到最新的数据(有可能被其它线程修改)