日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#中const,readonly和static關鍵字的用法介紹_C#教程

作者:Darren?Ji ? 更新時間: 2022-10-23 編程語言

如果有一個值不太會變化,我們經常使用const和readonly,這2者有何不同呢?有時候,我們也會在readonly之前加上關鍵字static,這又意味著什么呢?

const

  • const默認是靜態的,可以通過"類名.字段名"來訪問。
  • const變量只能在聲明的時候賦值,不能在構造函數中為const類型變量賦值。
  • 一旦程序集被編譯,const變量會被寫進程序集的IL代碼中。如果想修改const變量值,必須在修改值后再重新生成程序集。
  • const是編譯期變量
    public class Test
    {
        public const int defaultValue = 10;
        //這里報錯:因為不能在構造函數內為const變量賦值
        public Test()
        {
            defaultValue = 1000;
        }
    }

以上,
可以通過Test.defaultValue來獲取變量defaultValue的值。
在Test構造中為defaultValue賦值會報錯,只能在聲明defaultValue的時候賦初值。

readonly

readonly默認是實例變量,只能通過"對象實例.字段名"來訪問。
readonly變量可以在聲明的時候或在構造函數內賦值。
如果想改變readonly變量值,只需要在聲明變量或構造函數內修改,不需要重新生成程序集。
readonly是運行時變量

    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            Console.WriteLine(test.rdValue);
            Console.ReadKey();
        }
    }
    public class Test
    {
        public readonly int rdValue;
        public Test()
        {
            this.rdValue = 100;
        }
        //這里報錯:因為只能在聲明變量或構造函數內對readonly變量賦值
        public int RDVaue
        {
            get { return rdValue; }
            set { rdValue = value; }
        }
    }

以上,
通過Test類的實例來獲取readonly變量值,test.rdValue。
在RDValue屬性中為readonly變量rdValue賦值會報錯。

如果在readonly之前加上static關鍵字:

此時的readonly變量只能在聲明變量的時候賦值
此時的readonly變量可以通過"類名.字段名"來訪問
此時的readonly變量變成了編譯期變量

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Test.rdValue);
            Console.ReadKey();
        }
    }
    public class Test
    {
        public static readonly int rdValue=100;
    }

以上,
只能在聲明static readonly變量rdValue的時候賦值。?
通過Test.rdValue來訪問static readonly變量。

總結:const是靜態的、編譯期變量,只能在聲明變量的時候賦值;readonly是運行時變量,可以在聲明的時候或在構造函數內賦值。當在readonly前加上關鍵字static,變成static readonly后,此時的static readonly變量就變成了靜態的、編譯期變量。

原文鏈接:https://www.cnblogs.com/darrenji/p/3914078.html

欄目分類
最近更新