EffectiveC#2--為你的常量選擇readonly而不是const

來源:互聯網
上載者:User

標籤:

1.對於常量,C#裡有兩個不同的版本:

   編譯時間常量--效率相比更高些,但可維護性不好,保留的目的是為了效能。const關鍵字申明

                     public const int _Millennium = 2000;

   運行時常量--效率稍低些,可維護性好。readonlyc關鍵字聲明,也叫唯讀變數。

                    public static readonly int _ThisYear = 2007

2.兩者的區別;

        編譯時間常量只能是基本類型,枚舉或者是字串。編譯時間常量會被目標代碼中的值直接取代

        運行時常量可以是任何類型的資料。運行時常量動態取值(動態指運行時確定值)。

              注意:運行時常量可以在定義變數時設定值或在建構函式中初始化,其他地方不可以再修改。

      舉例:private const DateTime _classCreation = new DateTime(2000,1,1,0,0,0);  //ERROR 值編譯時間不確定

             private readonly DateTime _classCreation = new DateTime(2000,1,1,0,0,0);//PASS

        另外:運行時常量可以是一個類的執行個體成員,也可以是一個類型的靜態成員,而編譯時間常量只能是靜態成員

3.對可維護性的解釋

    例子:一個類庫中定義一個編譯時間常量,類庫被用戶端引用,當類庫中常量值需更改時,用戶端需要重新編譯,否則取出的

值有問題,而對於運行時常量不存在這樣的問題。

4.  const應該用於定義一個值且該值不能在不同的版本發布時發生改變的常量

 

EffectiveC#2--為你的常量選擇readonly而不是const

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.