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的時候通路。它保證每個線程讀到最新的資料(有可能被其它線程修改)