![](/img/trans.png)
[英]What is the purpose of “{0, -7}” during string interpolation in C#?
[英]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.