麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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”;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 污黄视频在线观看 | 毛片免费在线观看 | 日韩毛片网 | 国产高潮国产高潮久久久91 | 日本高清一级片 | 成年人黄视频 | 国产精品一区2区3区 | 911视频免费版 | 久久精品中文字幕一区 | 羞羞的动漫在线观看 | 欧美亚洲国产成人综合在线 | 草b视频在线观看 | 一级色毛片 | 欧美视频一区二区 | 国产免费成人在线 | 国产午夜精品久久久久 | 一二区电影 | 久久成人视屏 | 9191色| 欧美性激情视频 | 久久国产精品91 | 国产一区视频免费观看 | 国产精品视频久久久 | 毛片网站视频 | 毛片福利 | 暴力肉体进入hdxxxx古装 | 97超级碰碰人国产在线观看 | 国产小视频在线观看 | 亚洲精品在线观看免费 | 国产亚洲综合一区二区 | 国产91丝袜在线播放 | 亚洲人成在线播放 | 国产午夜精品久久久久久免费视 | 中文字幕在线观看视频www | 性爱网站 | 黄色免费播放网站 | 亚洲日韩精品欧美一区二区 | 欧美亚洲国产成人 | 一区二区久久精品66国产精品 | 福利四区| 欧美日韩一区二区综合 |