a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C#中 const 和 readonly 的不同

2020-01-24 03:26:12
字體:
來源:轉載
供稿:網友

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


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


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

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

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

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

復制代碼 代碼如下:

public static readonly Class1 my = new Class1();

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

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

static readonly:

Java 中 static 是當載入一個類時執行一次的。

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产欧美日韩精品一区二区三区 | 男女午夜网站 | 99久久久 | 国产精品123| 欧美精品网站 | 免费黄看片| 在线一区二区三区四区 | 日韩欧美综合 | 国产精品中文字幕在线播放 | 国产精品久久久久久福利一牛影视 | 精品国产一区二区三区性色av | 综合久久久久 | 四虎永久在线 | 欧美视频网站 | 日本在线一区二区 | 男女羞羞视频在线观看 | 国产亚洲精品久久久久久青梅 | 久久国内免费视频 | 在线观看亚洲精品视频 | 一区二区三区高清 | 亚洲精品乱码久久久v下载方式 | 欧美一级在线观看 | 精品久久网| 国产精品高潮呻吟久久久 | 亚洲一区中文字幕 | 国产成人影院在线观看 | 一区二区免费 | 精品国产三级 | 麻豆精品久久久 | 亚洲精彩视频在线观看 | 日韩在线一区二区 | 欧美一区黄 | 久久久久亚洲 | 一区二区精品 | 国产精品一区二区久久精品涩爱 | 日本久久精品一区二区 | 欧美日本国产欧美日本韩国99 | 91av久久| 久久精品91久久久久久再现 | 精品久久久久久久久久久久包黑料 | www.久久|