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

首頁(yè) > 編程 > C# > 正文

C#中 const 和 readonly 的不同

2020-01-24 03:26:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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


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


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

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

* 需要注意的一個(gè)問(wèn)題是:

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

復(fù)制代碼 代碼如下:

public static readonly Class1 my = new Class1();

my.SomeProperty = 10;//正常
my = new Class1(); //出錯(cuò),該對(duì)象是只讀的

但是,如果上例中的 Class1 不是一個(gè) Class 而是一個(gè) struct,那么后面的兩個(gè)語(yǔ)句就都會(huì)出錯(cuò)。

static readonly:

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武宁县| 泽库县| 屯门区| 新巴尔虎右旗| 定南县| 揭阳市| 临武县| 淮阳县| 尚志市| 双城市| 黄浦区| 额敏县| 高台县| 黑水县| 红安县| 客服| 区。| 洪雅县| 浏阳市| 阳新县| 南城县| 建宁县| 富顺县| 新兴县| 阜康市| 安乡县| 澎湖县| 土默特左旗| 怀化市| 鹤庆县| 德惠市| 莱州市| 喜德县| 平阴县| 青龙| 岳阳市| 疏附县| 祁阳县| 清徐县| 开封市| 松溪县|