天天看點

C# 修飾符

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