The different from Const and readonly.

readonly 關鍵字與 const 關鍵字不同。

1. const 字段只能在該字段的聲明中初始化。
   readonly 字段可以在聲明或構造函數中初始化。因此,根據所使用的構造函數,readonly 字段可能具有不同的值。
2. const 字段是編譯時常數,而 readonly 字段可用於運行時常數。
3. const 默認就是靜態的,而 readonly 如果設置成靜態的就必須顯示聲明。
4.const 對於引用類型的常數,可能的值只能是 stringnull
   readonly 可以是任何類型

 

* 需要注意的一個問題是:

對於一個 readonlyReference 類型,只是被限定不能進行賦值(寫)操作而已。而對其成員的讀寫仍然是不受限制的。

public static readonly Class1 my = new Class1();

my.SomeProperty = 10;
//正常
my = new Class1(); //出錯,該對象是隻讀的

但是,如果上例中的 Class1 不是一個 Class 而是一個 struct ,那麼後面的兩個語句就都會出錯。

 

static readonly :

Java 中 static 是當載入一個類時執行一次的。

C#中是怎麼執行的,我沒有查到。很奇怪幾乎每本java的書都會說static的問題,C#的往往只說怎麼用,但是應該是在main函數調用之前初始化,所以static readonly 也是運行時的,可以用變量付值,如:

private static readonly string path = System.Windows.Forms.Application.StartupPath + “aaa”;

發佈了8 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章