转:关于THREAD线程中CurrentCulture与CurrentUICulture的学习
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace e1
{
class Program
{
static void Main(string[] args)
{
CultureInfo userCulture = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(userCulture.Name);
Console.WriteLine(userCulture.LCID);
Console.WriteLine(userCulture.NativeName);
Console.WriteLine(userCulture.DisplayName);
Console.WriteLine(userCulture.TwoLetterISOLanguageName);
Console.WriteLine((100000).ToString("c"));
CultureInfo usCulture = Thread.CurrentThread.CurrentUICulture;
Console.WriteLine(usCulture.Name);
Console.WriteLine(usCulture.DisplayName);
Console.ReadLine();
}
}
}
MSDN描述
Thread.CurrentCulture 属性
获取或设置当前线程的区域性。
Thread.CurrentUICulture 属性获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
当从控制面板更改设置后在第一次运行代码时,区域信息并没有改变,当第二次运行时,通过CurrentCulture 属性实例化的userCulture信息发生变化,但是通过CurrentUICulture 属性实例化的usCulture却没有发生变化。
CultureInfo.CurrentUICulture 属性是每个线程的设置,可返回当前用户界面区域性。该属性由
ResourceManager 类用于在运行时查找区域性特定资源。可以使用非特定区域性、特定区域性或
InvariantCulture 来设置 CurrentUICulture 属性。可以使用
Thread.CurrentThread 属性设置 CurrentCulture。
CultureInfo.CurrentCulture 属性是每个线程的设置,可确定日期、时间、货币和数字的默认格式、文本排序顺序、字符串比较以及大小写转换。CurrentCulture 属性不是一个语言设置。它仅包含与地理区域的标准设置相关的数据。因此,只能将 CurrentCulture 属性设置为特定区域性或 InvariantCulture。可以使用 Thread.CurrentThread 属性设置 CurrentCulture。
一句话:当程序运行时,CurrentUICulture属性用来决定加载什么样的资源,而CurrentCulture属性用来决定诸如货币、数字和日期如何格式化。
CurrentCulture属性的默认值是操作系统的User Locale,我们可以在控制面板里设置。
CurrentUICulture属性的默认值是操作系统用户界面语言。
CurrentCulture属性的值必须是一个特定的culture, 比如"fr-FR",不能是一个neutral culture,
比如"fr". 一个neutral culture 例如"fr"会产生问题,因为它适用于所有French语系的culture,
但是France, Belgium和Quebec使用不同的货币