C#中 Const 、readonly、static 之間的差別和關係

iDotNetSpace發表於2010-03-05
static 修飾的變數意味著它屬於類級別,不需要例項化就可以直接通過 類名.變數名 來用。
const 預設是 static 型別,因此屬於類級別,它的特點是在編譯的時候用const修飾的變數的值就已經是明確知道的定值,而不能是一個計算表示式。而且,只能在宣告的時候給定它的值,以後都不可以改。
readonly 不是static型別,屬於例項級別,因此不能通過 類名.變數名 來用。只能通過 例項.變數名 來用。但是同const不同的是,它屬於執行時的常量,也就是說,readonly可以在執行時才確定它的值,一旦確定以後也不可以更改(建構函式外)。需要注意的是:readonly的值可以在宣告的時候指定,也可以自愛建構函式內部進行指定,其他地方均不可修改

readonly 允許把一個欄位設定成常量,但可以執行一些運算,可以確定它的初始值。
因為 readonly 是在計算時執行的,當然它可以用某些變數初始化。
readonly 是例項成員,所以不同的例項可以有不同的常量值,這使readonly更靈活。


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

1. const 欄位只能在該欄位的宣告中初始化。
   readonly 欄位可以在宣告或建構函式中初始化。因此,根據所使用的建構函式,readonly 欄位可能具有不同的值。
2. const 欄位是編譯時常數,而 readonly 欄位可用於執行時常數。
3. const 預設就是靜態的,而 readonly 如果設定成靜態的就必須顯示宣告。
4.const 對於引用型別的常數,可能的值只能是 string 和 null。
   readonly可以是任何型別

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-628714/,如需轉載,請註明出處,否則將追究法律責任。

相關文章