簡體   English   中英

C#6字符串插值的默認文化是什么?

[英]What is the default culture for C# 6 string interpolation?

在C#6中,新字符串插值的默認文化是什么?

我已經看到了關於Invariant和Current Culture的相互矛盾的報道。

我想得到一個明確的答案,我的手指越過Invariant。

在C#中使用字符串插值編譯成對String.Format的簡單調用。 你可以用TryRolsyn看到這個:

public void M()
{
    string name = "bar";
    string result = $"{name}";
}

編譯成這樣:

public void M()
{
    string arg = "bar";
    string text = string.Format("{0}", arg);
}

很明顯,這不會使用接受格式提供程序的重載, 因此它使用當前文化

但是,您可以將插值編譯為FormattbleString ,這樣可以保持格式和參數分離,並在生成最終字符串時傳遞特定的文化:

FormattableString formattableString = $"{name}";
string result = formattableString.ToString(CultureInfo.InvariantCulture);

現在(因為你喜歡),使用InvariantCulture是非常常見的,有一個簡寫:

string result = FormattableString.Invariant($"{name}");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM