导出 (0) 打印
全部展开
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文

CultureInfo.InvariantCulture 属性

获取不依赖于区域性(固定)的 CultureInfo 对象。

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

public static CultureInfo InvariantCulture { get; }

属性值

类型:System.Globalization.CultureInfo
不依赖于区域性(固定)的对象。

固定区域性不区分区域性;它关联英语语言,但不关联任何国家/地区。 通过名称指定固定区域性通过使用空字符串 ("") 在调用 CultureInfo 实例化方法。 CultureInfo.InvariantCulture 也用于检索固定区域性的实例。 System.Globalization 命名空间中需要设置区域性的几乎所有方法都可以使用固定区域性。 对象由属性返回 CompareInfo例如,DateTimeFormat,并且,NumberFormat 还反映固定区域性的字符串比较和格式设置约定。

不同区域性敏感数据,也会发生更改由用户可自定义或由更新对 .NET Framework 或操作系统,用于固定区域性数据是稳定的时间和安装的区域性中,不能由用户定义。 这使固定区域性尤其有用为需要区域性无关的结果的操作,如格式和保存设置数据的分析操作中,或者无论区域性,要求的排序和排序操作数据在固定的内置功能。

字符串操作

可以为不受当前线程区域性约定的影响,并在区域性间保持一致的区分区域性的字符串操作使用固定区域性。 例如,您可以排序的数据显示在固定排序或应用标准大小写约定于字符串而不管当前线程区域性。 为此,传递给具有一个 CultureInfo 参数的方法的 InvariantCulture 对象,例如 Compare(String, String, Boolean, CultureInfo)ToUpper(CultureInfo)

保存数据

InvariantCulture 属性在一个区域性无关的格式可用于保持数据。 这提供了不更改,可用于序列化和反序列化在区域性间数据的已知格式。 在数据进行反序列化后,可以基于当前用户的区域性约定正确格式化。

例如,因此,如果选择保存日期,并在字符串的时间数据窗体,可以传递给 DateTime.ToString(String, IFormatProvider)DateTimeOffset.ToString(IFormatProvider) 方法的 InvariantCulture 对象创建该字符串,因此,您可以传递给 DateTime.Parse(String, IFormatProvider)DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) 方法的 InvariantCulture 对象转换为一个字符串返回日期和时间值。 采用这种方法,可确保当不同区域性的用户读取或写入数据时, 日期和时间值不会发生更改。

下面的示例使用固定区域性保持 DateTime 值作为字符串。 通过使用法语 (法国) 和德国 (德国) 区域性的格式设置约定,它将分析该字符串并将它的值。


using System;
using System.IO;
using System.Globalization;

public class Example 
{
   public static void Main() 
   {
      // Persist the date and time data.
      StreamWriter sw = new StreamWriter(@".\DateData.dat");

      // Create a DateTime value.      
      DateTime dtIn = DateTime.Now;
      // Retrieve a CultureInfo object.
      CultureInfo invC = CultureInfo.InvariantCulture;

      // Convert the date to a string and write it to a file.
      sw.WriteLine(dtIn.ToString("r", invC));
      sw.Close();

      // Restore the date and time data.
      StreamReader sr = new StreamReader(@".\DateData.dat");
      String input;
      while ((input = sr.ReadLine()) != null) 
      {
         Console.WriteLine("Stored data: {0}\n" , input);    

         // Parse the stored string.
         DateTime dtOut = DateTime.Parse(input, invC, DateTimeStyles.RoundtripKind);

         // Create a French (France) CultureInfo object.
         CultureInfo frFr = new CultureInfo("fr-FR");
         // Displays the date formatted for the "fr-FR" culture.
         Console.WriteLine("Date formatted for the {0} culture: {1}" , 
                           frFr.Name, dtOut.ToString("f", frFr));

         // Creates a German (Germany) CultureInfo object.
         CultureInfo deDe= new CultureInfo("de-De");
         // Displays the date formatted for the "de-DE" culture.
         Console.WriteLine("Date formatted for {0} culture: {1}" , 
                           deDe.Name, dtOut.ToString("f", deDe));
      }
      sr.Close();
   }
}
// The example displays the following output:
//    Stored data: Tue, 15 May 2012 16:34:16 GMT
//    
//    Date formatted for the fr-FR culture: mardi 15 mai 2012 16:34
//    Date formatted for de-DE culture: Dienstag, 15. Mai 2012 16:34


安全决策

如果决策基于字符串比较或大小写更改的结果 (例如是否允许访问系统资源的访问) 的安全决策,不应使用固定区域性。 相反,应通过调用包括 StringComparison 参数和提供的 StringComparison.OrdinalStringComparison.OrdinalIgnoreCase 作为参数的方法执行区分大小写或不区分大小写的序号比较。 如果当前区域性更改了 ,或者运行代码的计算机上的区域性与用于测试代码的区域性不同,则执行区分区域性的字符串操作的代码可能导致安全漏洞。 相比之下,序号比较仅取决于比较的字符的二进制值。

.NET Framework

受以下版本支持:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

可移植类库

受以下版本支持:可移植类库

适用于 Windows 应用商店应用的 .NET

受以下版本支持:Windows 8

适用于 Windows Phone 应用的 .NET

受以下版本支持:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参阅.NET Framework 系统要求

社区附加资源

添加
显示:
© 2014 Microsoft