前言
不知道大家對C#中的const和reaonly這兩個關鍵字的差別有什麼了解,在了解這連個關鍵字之前先熟悉一下什麼是靜态常量和動态常量;
**靜态常量:**是指編譯器在編譯時候會對常量進行解析,并将常量的值替換成初始化的那個值。
**動态常量:**而動态常量的值則是在運作的那一刻才獲得的,編譯器編譯期間将其标示為隻讀常量,而不用常量的值代替,這樣動态常量不必在聲明的時候就初始化,而可以延遲到構造函數中初始化。現在再來說明const與readonly吧。
readonly和const
const修飾的常量是上述中的第一種,即靜态常量;而readonly則是第二種,即動态常量。那麼差別可以通過靜态常量與動态常量的特性來說明:
1、const修飾的常量在聲明的時候必須初始化;readonly修飾的常量則可以延遲到構造函數初始化;
2、const修飾的常量在編譯期間就被解析,即常量值被替換成初始化的值;readonly修飾的常量則延遲到運作的時候;
3、const修飾的常量注重的是效率;readonly修飾的常量注重靈活;
4、const修飾的常量沒有記憶體消耗;readonly因為需要儲存常量,是以有記憶體消耗;
5、const隻能修飾基元類型、枚舉類、或者字元串類型;readonly卻沒有這個限制;
看下面的例子:
上例中的person.Name = “Leo"編譯會報錯"無法對隻讀字段指派”;