天天看點

C#中的const和readonly 關鍵字

前言

不知道大家對C#中的const和reaonly這兩個關鍵字的差別有什麼了解,在了解這連個關鍵字之前先熟悉一下什麼是靜态常量和動态常量;

**靜态常量:**是指編譯器在編譯時候會對常量進行解析,并将常量的值替換成初始化的那個值。

**動态常量:**而動态常量的值則是在運作的那一刻才獲得的,編譯器編譯期間将其标示為隻讀常量,而不用常量的值代替,這樣動态常量不必在聲明的時候就初始化,而可以延遲到構造函數中初始化。現在再來說明const與readonly吧。

readonly和const

const修飾的常量是上述中的第一種,即靜态常量;而readonly則是第二種,即動态常量。那麼差別可以通過靜态常量與動态常量的特性來說明:

1、const修飾的常量在聲明的時候必須初始化;readonly修飾的常量則可以延遲到構造函數初始化;

2、const修飾的常量在編譯期間就被解析,即常量值被替換成初始化的值;readonly修飾的常量則延遲到運作的時候;

3、const修飾的常量注重的是效率;readonly修飾的常量注重靈活;

4、const修飾的常量沒有記憶體消耗;readonly因為需要儲存常量,是以有記憶體消耗;

5、const隻能修飾基元類型、枚舉類、或者字元串類型;readonly卻沒有這個限制;

看下面的例子:

C#中的const和readonly 關鍵字

上例中的person.Name = “Leo"編譯會報錯"無法對隻讀字段指派”;