readonly(C#)

來源:互聯網
上載者:User

標籤:

1.readonly關鍵字是可以在欄位上使用的修飾符。當欄位生命包括readonly修飾符時,該聲明引入的欄位賦值只能作為聲明的一部分出現,或者出現在同一類的建構函式中

2.在此執行個體中,欄位year的值無法再ChangeYear方法中更改,即使在類建構函式中中給它賦了值。

    class Age    {        readonly int _year;        Age(int year)        {            _year = year;        }        void ChangeYear()        {            //_year = 1967; // Compile error if uncommented.        }    }

3.只能在下列上下文中對readonly欄位進行賦值:
(1)當在聲明中初始設定變數時,例如:public readonly int y=5;

(2)對於執行個體欄位,在包含欄位聲明的類的執行個體建構函式中;或者,對於靜態欄位,在包含欄位聲明的類的靜態建構函式中。也只有在這些上下玩中,將readonly欄位作為out或ref參數傳遞有效。

(3)readonly 關鍵字與const關鍵字不同。const欄位只能在該欄位的聲明中初始化。readonly欄位可以在聲明或建構函式中初始化。因此,根據所使用的建構函式,readonly欄位可能具有不同的值。另外,const欄位為編譯時間常數,而readonly欄位可用於運行時常數,如下例所示:

public static readonly uint timeStamp=(uint)DateTime.Now.Ticks;

4.

    public class ReadOnlyTest    {       class SampleClass       {          public int x;          // Initialize a readonly field          public readonly int y = 25;          public readonly int z;          public SampleClass()          {             // Initialize a readonly instance field             z = 24;          }          public SampleClass(int p1, int p2, int p3)          {             x = p1;             y = p2;             z = p3;          }       }       static void Main()       {          SampleClass p1 = new SampleClass(11, 21, 32);   // OK          Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z);          SampleClass p2 = new SampleClass();          p2.x = 55;   // OK          Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z);       }    }    /*     Output:        p1: x=11, y=21, z=32        p2: x=55, y=25, z=24    */

 

在前面的樣本中,如果使用這樣的語句:

p2.y = 66;        // Error

將收到編譯器錯誤資訊:

The left-hand side of an assignment must be an l-value

這與嘗試將值賦給常數時收到的錯誤相同。

 

readonly(C#)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.