[C#] Const 與 ReadOnly 關鍵字

  • 7670
  • 0

[C#] Const 與 ReadOnly 關鍵字

const :

  • 僅可以在該欄位宣告時初始化。
  • 編譯時期常數。

readonly:

  • 可以在宣告或是在建構函式中初始化,會根據使用的建構函式而產生不同值。
  • 可當做執行階段常數使用。

 

做個小小實驗來看看兩者的差異

先建立一個類別庫的專案 SampleTest,加上一個SampleClass.cs

SampleClass.cs

{
    public class SampleClass
    {
        // Const
        public const int intConst = 10;

        // ReadOnly
        public readonly int intReadOnly = 12;
    }
}

建置SampleTest專案,產生SampleTest.dll,給主程式參考引用

主程式

    {
        public Form1()
        {
            InitializeComponent();

            SampleClass sc = new SampleClass();
            
            // Const 
            textBox1.Text = SampleClass.intConst.ToString();

            // ReadOnly
            textBox2.Text = sc.intReadOnly.ToString();
        }
    }

編譯主程式後產生結果

image

 

如果修改了 SampleClass.cs的Const與ReadOnly值,編譯後給主程式引用

{
    public class SampleClass
    {
        // Const
        public const int intConst = 20;

        // ReadOnly
        public readonly int intReadOnly = 22;
    }
}

執行主程式結果

image

這時只改變了ReadOnly的結果,因為ReadOnly是可以當執行階段常數使用

如果再重新編譯主程式,就可以改變Const的結果~

 

以上~謝謝

新手發文請多多指教 ^_____^