请选择 进入手机版 | 继续访问电脑版

[C#教程] C# CultureInfo之常用InvariantCulture案例详解

[复制链接]
查看232 | 回复39 | 2021-9-12 12:55:27 | 显示全部楼层 |阅读模式

1、CultureInfo的InvariantCulture的作用

(1)、CultureInfo使整个.NET Framework更加人性化,由于 这可以使同一个数据顺应 不同地区和文化,如许 当然满意 处于不同地区和文化的用户。但条件 是数据给“人”看,假如 这些数据用于计算机之间的传输,即给“机器”看,如许 的多文化处理反而不妥,造成同一个数据的不同显现 情势 ,尤其是读写两方的文化地区不同时,数据大概 根本无法被正常读取或者产生潜伏 bug,因此这里,正是InvariantCulture的用武之地。

(2)、当举行 数字,日期时间,字符串匹配时,都会举行 CultureInfo的操作,也就是不同的CultureInfo下,这些操作的结果 大概 会不一样。这里要先容 一下非常容易 被忽视InvariantCulture。

2、利用 场景

你编写一个程序,要向数据中央 折 务器传递一些时间数据,你会怎么写?直接DateTime.ToString()?那你就大错特错了,下面用代码,举个非常形象的例子。在一个控制台里,模拟 数据中央 ,然后放出多个线程,模拟 客户端程序传递数据。

  1. static readonly string[] CultureSources = { "en-us", "zh-cn", "ar-iq", "de-de" };
  2. static readonly Random Ran = new Random(Environment.TickCount);
  3. static void Main()
  4. {
  5. Console.WriteLine("数据中心开始接受客户端数据:");
  6. for (int i = 0; i < CultureSources.Length; i++)
  7. ThreadPool.QueueUserWorkItem(Client, i);
  8. Console.ReadKey(true);
  9. Console.WriteLine("");
  10. Console.WriteLine("数据中心:…………");
  11. }
  12. static void Client(object obj)
  13. {
  14. int id = (int)obj;
  15. Thread.Sleep(Ran.Next(1000));
  16. CultureInfo cul = CultureInfo.GetCultureInfo(CultureSources[id]);
  17. Thread.CurrentThread.CurrentCulture = cul;
  18. Console.WriteLine("某客户端操作系统语言设置{0}\n传送数据:{1}\n", cul.DisplayName, new DateTime(1990, 10, 27).ToShortDateString());
  19. }
复制代码

C# CultureInfo之常用InvariantCulture案例详解

同样的DateTime.ToShortDateString(),在英语-美国,中文-中国,阿拉伯语-伊拉克和德语-德国的不同环境下,1990年10月27日竟然有云云 不同的输出结果 ,这些数据让数据中央 折 务器情何以堪啊!!!

造成这个环境 的缘故原由 是:在举行 日期时间输出时,.NET会思量 当火线 程的CultureInfo,即Thread.CurrentThread.CurrentCulture(或者CultureInfo.CurrentCulture),并根据CultureInfo,举行 相应地区文化的数据处理。注意 不要和UICulture混淆。

办理 方案就是利用 这个特殊 的InvariantCulture.办理 代码如下:

  1. Console.WriteLine("某客户端操作系统语言设置{0}\n传送数据:{1}\n", cul.DisplayName, new DateTime(1990, 10, 27).ToString(CultureInfo.InvariantCulture.DateTimeFormat.ShortDatePattern, CultureInfo.InvariantCulture));
复制代码

C# CultureInfo之常用InvariantCulture案例详解

ok,如许 不管客户端运行在什么语言环境下,输出的时间格式都是同一 的,方面数据中央 折 务器对数据做后续处理。如许 全部 的输出结果 都保持划一 了。

到此这篇关于C# CultureInfo之常用InvariantCulture案例详解的文章就先容 到这了,更多干系 C# CultureInfo之常用InvariantCulture内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 123457064 | 2021-9-14 12:37:25 | 显示全部楼层
这一年啥事没干,光研究admin楼主的帖子了!
回复

使用道具 举报

avatar 素身素 | 2021-9-14 22:52:59 | 显示全部楼层
admin楼主看起来很有学问!
回复

使用道具 举报

avatar 温室小书生室d | 2021-9-15 22:18:40 | 显示全部楼层
我就搞不明白了,看帖回帖能死人么,居然只有我这么认真的在回帖!
回复

使用道具 举报

avatar 123457665 | 2021-9-16 10:20:57 | 显示全部楼层
强,我和我的小伙伴们都惊呆了!
回复

使用道具 举报

avatar 败明急总 | 2021-9-21 17:12:36 | 显示全部楼层
admin楼主写的很经典!
回复

使用道具 举报

avatar 半岛宫殿rw | 2021-9-22 10:24:24 | 显示全部楼层
楼上是GG还是MM啊?
回复

使用道具 举报

avatar 待该州伙 | 2021-9-29 19:35:54 | 显示全部楼层
收藏了,admin楼主加油!
回复

使用道具 举报

avatar 123457294 | 2021-9-30 06:50:23 | 显示全部楼层
东方不败还是灭绝师太啊?
回复

使用道具 举报

avatar 蠕行者 | 2021-9-30 06:50:26 | 显示全部楼层
顶!顶!顶!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则