首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是不变文化?

什么是不变文化?
EN

Stack Overflow用户
提问于 2010-03-11 07:58:26
回答 5查看 89.1K关注 0票数 180

有人能给出一个例子来演示不变文化的用法吗?我不明白文档描述了什么。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-11 08:05:38

不变文化是一种特殊的文化,它是有用的,因为它不会改变。当前文化可以从一个用户更改到另一个用户,甚至可以从一个用户运行到另一个用户,因此您不能依赖它保持不变。

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

代码语言:javascript
复制
// 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);
票数 142
EN

Stack Overflow用户

发布于 2010-03-11 08:02:22

一种以英语为基础的有明确行为的假文化。写出来很棒,例如,把东西写到配置文件中,这样不管用户定义了什么区域性,都可以读写它。

基本上,这是一种特定的文化,是人为的,不会改变

票数 115
EN

Stack Overflow用户

发布于 2010-03-11 08:03:45

它用于相同的东西,不管文化(不需要被翻译成某种文化X是合适的)

举个例子-- https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx。当您写出一个用户不应该乱搞的应用程序特定的文件时,您应该对接受区域性参数的所有方法使用InvariantCulture。

请注意,根据上面链接的文档:

但是,应用程序应该只对需要与区域性无关的结果的进程使用不变区域性,例如对持久化到文件的数据进行格式化和解析。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2423377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档