c# - 常量字符串與靜態只讀字符串在C#中





(5)


以下是優點和缺點的細分

所以,當值不可能改變時,或者如果沒有外部應用程序/庫將使用該常量,應該使用常量。 當需要運行時計算時,或者如果外部消費者是一個因素,應該使用靜態只讀字段。

在C#中,有什麼區別

static readonly string MyStr;

const string MyStr;



當你使用一個const字符串時,編譯器會在編譯時嵌入字符串的值。
因此,如果在不同的程序集中使用常量值,則更新原始程序集並更改該值,否則在重新編譯之前,其他程序集將看不到更改。

static readonly字符串是在運行時查看的普通字段。 因此,如果該字段的值在不同的程序集中發生更改,那麼在程序集加載完成後即可看到更改,而無需重新編譯。

這也意味著static readonly字符串可以使用非常量成員,例如Environment.UserNameDateTime.Now.ToString()const字符串只能使用其他常量或文字進行初始化。
另外, static readonly字符串可以在靜態構造函數中設置; const字符串只能被內聯初始化。

請注意,可以修改static string ; 你應該使用static readonly




快速回答 :

public const string MyStr; 

編譯時間常量(例如,您可以將它用作方法參數的默認參數),並且如果您使用這種技術,它將不會被混淆

public static readonly string MyStr;

運行時常量,這意味著它在應用程序啟動時而不是之前進行評估。 這就是為什麼它不能用作方法(編譯錯誤)的默認參數。 存儲在其中的值可能會被混淆




只能在類的static構造函數或變量初始值設定項中更改static readonly string的值,而不能在任何位置更改const字符串的值。




我會說foreach是標準的方式,雖然它顯然取決於你在尋找什麼

foreach(var kvp in my_dictionary) {
  ...
}

這就是你要找的東西嗎?






c#  

c#