国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

C#中 const 和 readonly 的區(qū)別

2024-07-21 02:29:31
字體:
供稿:網(wǎng)友

const readonly 的區(qū)別,總是不太清楚,于是查了查資料。

  const 的概念就是一個包含不能修改的值的變量。
常數(shù)表達(dá)式是在編譯時可被完全計算的表達(dá)式。因此不能從一個變量中提取的值來初始化常量。
如果 const int a = b+1;b是一個變量,顯然不能再編譯時就計算出結(jié)果,所以常量是不可以用變量來初始化的。


  readonly 允許把一個字段設(shè)置成常量,但可以執(zhí)行一些運算,可以確定它的初始值。
因為 readonly 是在計算時執(zhí)行的,當(dāng)然它可以用某些變量初始化。
readonly 是實例成員,所以不同的實例可以有不同的常量值,這使readonly更靈活。


readonly 關(guān)鍵字與 const 關(guān)鍵字不同。

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

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

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

public static readonly class1 my = new class1();

my.someproperty = 10;
//正常
my = new class1(); //出錯,該對象是只讀的

但是,如果上例中的 class1 不是一個 class 而是一個 struct,那么后面的兩個語句就都會出錯。

static readonly:

java 中 static 是當(dāng)載入一個類時執(zhí)行一次的。

c#中是怎么執(zhí)行的,我沒有查到。很奇怪幾乎每本java的書都會說static的問題,c#的往往只說怎么用,但是應(yīng)該是在main函數(shù)調(diào)用之前初始化,所以static readonly也是運行時的,可以用變量付值,如:

private static readonly string path = system.windows.forms.application.startuppath + “aaa”;

  • 本文來源于網(wǎng)頁設(shè)計愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 平山县| 湖州市| 德安县| 酒泉市| 凯里市| 林州市| 子长县| 巩义市| 荥经县| 元谋县| 独山县| 祥云县| 梁河县| 驻马店市| 南城县| 镇宁| 如皋市| 蒲江县| 平定县| 玉山县| 平泉县| 长顺县| 昌江| 淄博市| 鹤山市| 巴彦淖尔市| 图木舒克市| 连山| 尼勒克县| 巴青县| 五指山市| 邹城市| 阜城县| 名山县| 麻栗坡县| 德庆县| 阿尔山市| 清河县| 灌南县| 岳阳市| 孙吴县|