有人可以举一个例子来证明 不变文化 的用法吗?我不明白文档描述的内容。
不变的文化是一种特殊的文化,它是有用的,因为它不会改变。当前的文化可以从一个用户到另一个用户,甚至从一个运行到另一个,所以你不能指望它保持不变。
每次能够使用相同的文化在多个流程中非常重要,例如序列化:您可以在一种文化中具有 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);