C# CultureInfo类案例详解

 更新时间:2021年08月28日 14:45:36   作者:HOLD ON!  
这篇文章主要介绍了C# CultureInfo类案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

c#中的CultureInfo类

CultureInfo类位于System.Globalization命名空间内,这个类和命名空间许多人都不是很熟悉,实际我们在写程序写都经常间接性的接触这个类,当进行数字,日期时间,字符串匹配时,都会进行CultureInfo的操作,也就是说,也就是不同的CultureInfo下,这些操作的结果可能会不一样,由于我们大部分开发部署都是在同一种语言环境中,平日里可能没有感觉到它的用处,如果你的开发的项目是给国外用户用的,有可能在你机器上运行输出是一种效果,在客户机器上是另一种输出效果,这句需要用到CultureInfo类了,对使用用户来说,这也是ms提供的人性化的一面(比方说,同样是日期,中文环境输出符合中国人的习惯,德语环境中的输出符合德国人的习惯,这是默认的输出方式),但对开发人员和服务数据中心来说,就要选择是保证统一的输出,还是用ms的默认方式了
code如下:

static readonly string[] CultureSources = { "en-us", "zh-cn", "ar-iq", "de-de" };
        static readonly Random Ran = new Random(Environment.TickCount);


        static void Main()
        {
            for (int i = 0; i < CultureSources.Length; i++){
                ThreadPool.QueueUserWorkItem(Client, i);
}
            Console.ReadLine();
        }


        static void Client(object obj)
        {
            int id = (int)obj;
            Thread.Sleep(Ran.Next(1000));
            CultureInfo culture = CultureInfo.GetCultureInfo(CultureSources[id]);            
            Thread.CurrentThread.CurrentCulture = culture;
            Console.WriteLine("操作系统语言设置成{0}\n数据输出是:{1}\n", culture.DisplayName, DateTime.Now.ToShortDateString());
        }

运行结果如下:

结果看到了吧,同样的DateTime.Now.ToShortDateString(),在英语-美国,中文-中国,阿拉伯语-伊拉克和德语-德国的不同环境下,日期输出格式竟然有如此不同的输出结果,这样对使用的用户来说是很友好的,单对编程人员来说,如果对这些数据要处理,就要考虑不同的语言环境中,该怎么处理了,同时,这些数据让数据中心服务器情何以堪啊……
原因分析:
.NET会考虑当前线程的CultureInfo,即Thread.CurrentThread.CurrentCulture(或者CultureInfo.CurrentCulture),并根据CultureInfo,进行相应地区文化的数据处理,要解决这个问题,这样设置
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;//和new CultureInfo("");一样,使用固定区域性,固定区域性不区分区域性;它与英语语言关联,但不与任何国家/地区关联
这样不管客户端运行在什么语言环境下,输出的时间格式都是统一的,方面数据中心服务器对数据做后续处理,结果如下图:

支持多种CultureInfo是整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户,但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug,因此这里,正是InvariantCulture的用武之地。

到此这篇关于C# CultureInfo类案例详解的文章就介绍到这了,更多相关C# CultureInfo类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 如何获取处于运行中的Excel、Word对象

    C# 如何获取处于运行中的Excel、Word对象

    这篇文章主要介绍了C# 获取处于运行中的Excel、Word对象操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#使用非托管代码直接修改字符串的方法

    C#使用非托管代码直接修改字符串的方法

    在string方法中,如ToUpper等字符串操作方法,都会产生一个新的字符串,这样增大了运行开支。一个替代方案是通过非托管代码直接操作字符串。如替代ToUpper方法:
    2013-07-07
  • C#生成互不相同随机数的实现方法

    C#生成互不相同随机数的实现方法

    这篇文章主要介绍了C#生成互不相同随机数的实现方法,文中详细描述了C#生成互不相同随机数的各个步骤及所用到的函数,非常具有借鉴价值,需要的朋友可以参考下
    2014-09-09
  • WPF+Canvas实现平滑笔迹的示例代码

    WPF+Canvas实现平滑笔迹的示例代码

    这篇文章主要介绍了如何利用WPF+Canvas实现平滑笔迹效果,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-09-09
  • C#调用OutLokk实现发送邮件

    C#调用OutLokk实现发送邮件

    这篇文章主要为大家详细介绍了如何利用C#调用OutLokk实现发送邮件的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • c#枚举值增加特性说明(推荐)

    c#枚举值增加特性说明(推荐)

    这篇文章主要介绍了c#枚举值增加特性说明(推荐),需要的朋友可以参考下
    2017-05-05
  • C#二维码图片识别代码

    C#二维码图片识别代码

    这篇文章主要为大家详细介绍了C#二维码图片识别代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • WinForm实现的图片拖拽与缩放功能示例

    WinForm实现的图片拖拽与缩放功能示例

    这篇文章主要介绍了WinForm实现的图片拖拽与缩放功能,结合具体实例形式分析了WinForm鼠标事件响应及图片元素动态操作相关实现技巧,需要的朋友可以参考下
    2017-05-05
  • c# 通过经纬度查询 具体的地址和区域名称

    c# 通过经纬度查询 具体的地址和区域名称

    最近项目需要通过经纬度查询 具体的地址和区域名称,通过查询网络资源,发现提供的大多是得到具体的地址而对区域或城市名称的获取就不是很好把握;在这里自己搞了个,需要的朋友可以参考下
    2012-11-11
  • C#托管堆对象实例包含内容分析

    C#托管堆对象实例包含内容分析

    这篇文章主要介绍了C#托管堆对象实例包含内容,实例展示了托管对象的结构及运行原理,需要的朋友可以参考下
    2014-09-09

最新评论