CultrueInfo保存区域特定的信息,如关联的语言、子语言、国家/地区、日历和区域性约定。该类还提供对DateTimeFormatInfo、NumberformatInfo、CompareInfo和TextInfo的区域性特定实例的访问。这些对象包含区域性特定操作(如大小写、格式化日期时间和数字以及比较字符串)所需的信息。

命名空间:System.Globalization
程序集:mscorlib(在 mscorlib.dll 中)

部分区域性名称和标识符:

区域性名称 区域性标识符 语言-国家/地区
ar 0x0001 阿拉伯语
ar-EG 0x0C01 阿拉伯语 – 埃及
zh-CN 0x0804 中文 – 中国
zh-CHS 0x0004 中文(简体)
zh-TW 0x0404 中文 – 台湾
zh-CHT 0x7C04 中文(繁体)
en 0x0009 英语
en-GB 0x0809 英语 – 英国
en-US 0x0409 英语 – 美国
fr 0x000C 法语
fr-FR 0x040C 法语 – 法国
de 0x0007 德语
de-DE 0x0407 德语 – 德国
es 0x000A 西班牙语
es-BO 0x400A 西班牙语 – 玻利维亚
es-ES 0x0C0A 西班牙语 – 西班牙

可以通过名称和区域性标识符来创建CultureInfo:

名称 说明
CultureInfo (Int32) 根据区域性标识符指定的区域性初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。
CultureInfo (String) 根据由名称指定的区域性初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。
CultureInfo (Int32, Boolean) 基于区域性标识符指定的区域性并基于布尔值(指定是否使用系统中用户选定的区域性设置)来初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。
CultureInfo (String, Boolean) 基于名称指定的区域性并基于布尔值(指定是否使用系统中用户选定的区域性设置)来初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。

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

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());
        }