程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# .NET Quiz: const vs. readonly

C# .NET Quiz: const vs. readonly

編輯:關於C語言

關於C#中的const和readonly想必使用C# .Net開發的朋友都很了解吧?總結一下const和readonly也就這麼幾條吧:

const和readonly的值一旦初始化則都不再可以改寫;
const只能在聲明時初始化;readonly既可以在聲明時初始化也可以在構造器中初始化;
const隱含static,不可以再寫static const;readonly則不默認static,如需要可以寫static readonly;
const是編譯期靜態解析的常量(因此其表達式必須在編譯時就可以求值);readonly則是運行期動態解析的常量;
const既可用來修飾類中的成員,也可修飾函數體內的局部變量;readonly只可以用於修飾類中的成員
const 只能修飾內建類型(String除外),而readonly可以修飾引用類型。(新增)
前面幾條也沒什麼可說的,不過關於這第4條,裡面還是有些文章可做的。試試下面的例子,看看是否與你所想一致吧!

顯示全部

0. 常量與靜態只讀變量類庫(文件名Consts.cs)

public class Consts
{
? public const string Const = "const";
? public static readonly string Readonly = "readonly";
}

執行csc /t:library Consts.cs編譯輸出Consts.dll。

1. 客戶端(文件名Quiz.cs,編譯選項/r:Consts.dll)

public class Quiz
{
? public static void Main()
? {
??? System.Console.WriteLine(Consts.Const);
????System.Console.WriteLine(Consts.Readonly);
? }
}

執行csc Quiz.cs編譯輸出Quiz.exe.

2. 執行Quiz.exe,輸出如下:

const
readonly

3. 現在把Consts.cs裡面的兩個常量的值都換成大寫並重新編譯Consts.cs(Quiz.exe不變,仍是引用Consts.dll)。再執行Quiz.exe,輸出會是……什麼呢?(const READONLY)

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