.Net Frameword使用System.Globalization.Culture类型表示一个"语言/国家"对(根据RFC 1766标准).例如,'en-US'代表美国英语,'en-AU'代表澳大利亚英语,而'de-DE'代表德国德语.

在CLR中,每个线程都关联了两个特殊的属性,每个属性都引用一个CultureInfo对象.属性如下:

(1)、CurrentCultrue属性

Thread类下面的CurrentCultrue属性,关联的是当前线程的CultrueInfo对象.返回当前线程的CultrueInfo(语言/国家)实例对象.

该属性用于数字和日期的格式化、字符串大小写转换以及字符串比较.格式化的同时要用到CultureInfo对象的"语言"和"国家"部分.创建线程时,这个线程属性被设为一个默认的CultrueInfo对象,其值通过调用Win32函数GetUserDefaultLCID来获取。可通过Windows控制面板的"区域和语言"对话框来修改这个值.

不确定是不是创建线程时通过GetUserDefaultLCID()方法来获取语言/国家信息,因为Thread类下面我没有查到GetUserDefaultLCID方法,但是.Net Framework确实提供了这个方法.由于是internal所以无法调用显示,有点尴尬.另外我在CultureInfo类下面发现了LCID属性,调用代码如下:

var currentThreadLanguage = Thread.CurrentThread.CurrentCulture.LCID;
var cl = new CultureInfo(CurrentThreadLanguage);
Console.WriteLine("简称:{0},全称:{1}",cl.Name,cl.NativeName); //输出简称:zh-CN,全称:中文(中国)

(2)、CurrentUICultrue属性

调用代码:

var currentThreadLanguage = Thread.CurrentThread.CurrentUICulture.LCID;
var cl = new CultureInfo(CurrentThreadLanguage);
Console.WriteLine("简称:{0},全称:{1}",cl.Name,cl.NativeName); //输出简称:zh-CN,全称:中文(中国)

(3)、CompareInfo属性

.Net Framework中每个CultureInfo实例中都有一个CompareInfo属性实例,该属性初始化了一个根据当前语言/国家的CompareInfo实例,该类型封装了语言文化的字符排序表信息(根据Uniocde标准的定义)。

var a = "sie";
var b = "Ich";
var ci = new CultureInfo("de-DE");
Console.WriteLine(string.Compare(a,b,false, ci)); //输出:1

还有其他语言的判断,具体请自行验证

CLR关于语言文化的类型一CultureInfo类和字符串与线程的关联的更多相关文章

  1. C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)

    常规的调用ToString()方法,存在两个问题. (1).调用者无法控制字符串的格式 (2).调用者不能方便的选择一种特定的语言文化来格式化字符串. 在开发一些国际化的应用时,应用程序需要调用与当前 ...

  2. 重温CLR(十一) 枚举类型、位标志和数组

    枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum ...

  3. C/C++/Java/C#语言的基本类型

    C语言的基本类型有:char, short ,int ,long ,float ,double 一共6种基本类型. C++语言有:bool, char ,wchar_t, short, int , l ...

  4. CLR via C#可空值类型

    我们知道,一个值类型的变量永远不可能为null.它总是包含值类型本身.遗憾的是,这在某些情况下会成为问题.例如,设计一个数据库时,可将一个列定义成为一个32位的整数,并映射到FCL的Int32数据类型 ...

  5. C语言中不同类型的循环(Different types of loops in C)

    C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) { //gets executed after condition ...

  6. C语言的函数类型

    C语言的函数类型与返回值类型不一致时出现,是以函数类型为标准; 而如果在java与c#语言中上述情况是编译错误的;

  7. C++语言中的类型(一)

    --分门别类是简化事物最有效的方式. 类型是C++语言的基础,对象类型决定了能对该对象进行的操作. 一.基本内置数据类型 C++预先定义的基本内置数据类型是构造世界万物的原子,数据类型告诉我们数据的意 ...

  8. 浅析c++和c语言的enum类型

    1.先看c语言枚举类型 1.c语言定义枚举类型,每一个枚举元素都是一个整数2.注重数据类型,没有数据类型限定3.相邻枚举元素相差整数4.可以通过整数访问,不够安全 2.上代码: 1 #include& ...

  9. C#6.0语言规范(四) 类型

    C#语言的类型分为两大类:值类型和引用类型.值类型和引用类型都可以是泛型类型,它们采用一个或多个类型参数.类型参数可以指定值类型和引用类型. type : value_type | reference ...

随机推荐

  1. 第20章:MongoDB-聚合操作--聚合管道--$unwind

    ①$unwind 在查询数据的时候经常会返回数组信息,但是数组并不方便信息的浏览,所以提供有“$unwind”可以将数组数据变为独立的字符串内容. 将文档中数组类型的字段拆分成多条,每条文档包含数组中 ...

  2. REST WebService与SOAP WebService的比较

    在SOA的基础技术实现方式中WebService占据了很重要的地位,通常我们提到WebService第一想法就是SOAP消息在各种传输协议上交互.近几年REST的思想伴随着SOA逐渐被大家接受,同时各 ...

  3. 可执行 jar | 到底如何执行

    dog │ pom.xml │ └───src └───main └───java └───cn └───zno Dog.java bark │ pom.xml │ └───src └───main ...

  4. java -help

    Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args... ...

  5. bzoj2388(分块 凸包)

    好像没有什么高级数据结构能够很高效地实现这个东西: 那就上万能的分块,我们用一些数形结合的思想,把下标看成横坐标,前缀和的值看成纵坐标: 给区间内每个数都加k相当于相邻两点的斜率都加上k: 这种东西我 ...

  6. centos网络配置(手动设置,自动获取)的2种方法3

    不知道为什么最近一段时间网络特别的慢,还老是断,断的时候,局域网都连不上,当我手动设置一下ip后就可以了,搞得我很无语.下面是2种设置网络连接的方法,在说怎么设置前,一定要做好备份工作,特别是对于新手 ...

  7. 【Andorid开发框架学习】之Mina开发之Mina简介

    今天我将介绍 Apache MINA的基本概念和 API,包括 I/O服务.I/O 会话.I/O 过滤器和 I/O 处理器. 一.MINA的简介 Apache MINA是一个网络应用程序框架,用来帮助 ...

  8. hihocode 1336 Matrix Sum 【二维树状数组】

    题目 两个操作: 1. Add x y value: Add value to the element Axy. (Subscripts starts from 0 2. Sum x1 y1 x2 y ...

  9. codeforce864d

    D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  10. 13.1.DataGrid的增、删、改、查前台页面

    公共js: 前台页面: