小编典典

什么是不变文化?

all

有人可以举一个例子来证明 不变文化
的用法吗?我不明白文档描述的内容。


阅读 123

收藏
2022-08-16

共1个答案

小编典典

不变的文化是一种特殊的文化,它是有用的,因为它不会改变。当前的文化可以从一个用户到另一个用户,甚至从一个运行到另一个,所以你不能指望它保持不变。

每次能够使用相同的文化在多个流程中非常重要,例如序列化:您可以在一种文化中具有 1,1 值,而在另一种文化中具有 1.1
值。如果您尝试在第二种文化中解析“1,1”值,则解析将失败。但是,您可以使用不变的区域性将数字转换为字符串,然后从具有任何区域性集的任何计算机上将其解析回来。

// Use some non-invariant culture.
CultureInfo nonInvariantCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = nonInvariantCulture;

decimal dec = 1.1m;
string convertedToString = dec.ToString();

// Simulate another culture being used,
// following code can run on another computer.
nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ",";

decimal parsedDec;

try
{
    // This fails because value cannot be parsed.
    parsedDec = decimal.Parse(convertedToString);
}
catch (FormatException)
{
}

// However you always can use Invariant culture:
convertedToString = dec.ToString(CultureInfo.InvariantCulture);

// This will always work because you serialized with the same culture.
parsedDec = decimal.Parse(convertedToString, CultureInfo.InvariantCulture);
2022-08-16