關於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)