程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎概念二十五問(2)

C#基礎概念二十五問(2)

編輯:關於C語言

2.const 和 static readonly 區別?

答:

const

用 const 修飾符聲明的成員叫常量,是在編譯期初始化並嵌入到客戶端程序

static readonly

用 static readonly 修飾符聲明的成員依然是變量,只不過具有和常量類似的使用方法:通過類進行訪問、初始化後不可以修改。但與常量不同的是這種變量是在運行期初始化

示例:

測試類:

using System;
using System.Collections.Generic;
using System.Text;
namespace Example02Lib
{
  public class Class1
  {
    public const String strConst = "Const";
    public static readonly String strStaticReadonly = "StaticReadonly";
    //public const String strConst = "Const Changed";
    //public static readonly String strStaticReadonly = "StaticReadonly Changed";
  }
}
客戶端代碼:
using System;
using System.Collections.Generic;
using System.Text;
using Example02Lib;
namespace Example02
{
  class Program
  {
    static void Main(string[] args)
    {
      //修改Example02中Class1的strConst初始值後,只編譯Example02Lib項目
      //然後到資源管理器裡把新編譯的Example02Lib.dll拷貝Example02.exe所在的目錄,執行Example02.exe
      //切不可在IDE裡直接調試運行因為這會重新編譯整個解決方案!!
      //可以看到strConst的輸出沒有改變,而strStaticReadonly的輸出已經改變
      //表明Const變量是在編譯期初始化並嵌入到客戶端程序,而StaticReadonly是在運行時初始化的
      Console.WriteLine("strConst : {0}", Class1.strConst);
      Console.WriteLine("strStaticReadonly : {0}", Class1.strStaticReadonly);
      Console.ReadLine();
    }
  }
}

結果:

strConst : Const

strStaticReadonly : StaticReadonly

修改後的示例:

測試類:

using System;
using System.Collections.Generic;
using System.Text;
namespace Example02Lib
{
  public class Class1
  {
    //public const String strConst = "Const";
    //public static readonly String strStaticReadonly = "StaticReadonly";
    public const String strConst = "Const Changed";
    public static readonly String strStaticReadonly = "StaticReadonly Changed";
  }
}

結果

strConst : Const

strStaticReadonly : StaticReadonly Changed

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved