System.Globalization.CultureInfo.InvariantCulture özelliği

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

Sabit kültür kültüre duyarsızdır; İngilizce diliyle ilişkilidir ancak herhangi bir ülke/bölgeyle ilişkilendirilmemiştir. Bir örnekleme yöntemi çağrısında CultureInfo boş bir dize ("") kullanarak sabit kültürü ada göre belirtirsiniz. Bu özelliği, CultureInfo.InvariantCulturesabit kültürün bir örneğini de alır. Ad alanında kültür gerektiren hemen her yöntemde System.Globalization kullanılabilir. , DateTimeFormatNumberFormat ve gibi CompareInfoözellikler tarafından döndürülen nesneler, sabit kültürün dize karşılaştırma ve biçimlendirme kurallarını da yansıtır.

Kullanıcı özelleştirmesi veya .NET Framework veya işletim sistemi güncelleştirmeleri tarafından değiştirilebilir kültüre duyarlı verilerden farklı olarak, sabit kültür verileri zaman içinde ve yüklü kültürler arasında kararlıdır ve kullanıcılar tarafından özelleştirilemez. Bu, sabit kültürü özellikle biçimlendirilmiş verileri kalıcı hale getiren biçimlendirme ve ayrıştırma işlemleri veya verilerin kültürden bağımsız olarak sabit bir düzende görüntülenmesini gerektiren sıralama ve sıralama işlemleri gibi kültürden bağımsız sonuçlar gerektiren işlemler için kullanışlı hale getirir.

Dize işlemleri

Geçerli kültürün kurallarından etkilenmeyen ve kültürler arasında tutarlı olan kültüre duyarlı dize işlemleri için sabit kültürü kullanabilirsiniz. Örneğin, sıralanmış verilerin sabit bir düzende görünmesini veya geçerli kültürden bağımsız olarak dizelere standart bir büyük/küçük harf kuralları kümesi uygulanmasını isteyebilirsiniz. Bunu yapmak için nesnesini ve ToUpper(CultureInfo)gibi Compare(String, String, Boolean, CultureInfo) bir parametresi olan bir CultureInfo yönteme geçirirsinizInvariantCulture.

Kalıcı veriler

InvariantCulture özelliği, verileri kültürden bağımsız bir biçimde kalıcı hale getirmek için kullanılabilir. Bu, değişmeyen ve kültürler arasında verileri seri hale getirmek ve seri durumdan çıkarmak için kullanılabilen bilinen bir biçim sağlar. Veriler seri durumdan çıkarıldıktan sonra, geçerli kullanıcının kültürel kurallarına göre uygun şekilde biçimlendirilebilir.

Örneğin, tarih ve saat verilerini dize biçiminde kalıcı hale getirmek isterseniz, dizeyi InvariantCulture oluşturmak için nesnesini DateTime.ToString(String, IFormatProvider) veya DateTimeOffset.ToString(IFormatProvider) yöntemine geçirebilir ve dizeyi yeniden tarih ve saat değerine dönüştürmek için veya DateTime.Parse(String, IFormatProvider)DateTimeOffset.Parse(String, IFormatProvider, DateTimeStyles) yöntemine geçirebilirsinizInvariantCulture. Bu teknik, veriler farklı kültürlerden kullanıcılar tarafından okunduğunda veya yazıldığında temel alınan tarih ve saat değerlerinin değişmemesini sağlar.

Aşağıdaki örnek, bir DateTime değeri dize olarak kalıcı hale getirmek için sabit kültürü kullanır. Ardından dizeyi ayrıştırarak Fransızca (Fransa) ve Almanca (Almanya) kültürlerinin biçimlendirme kurallarını kullanarak değerini görüntüler.

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
Imports System.Globalization
Imports System.IO

Module Example
   Public Sub Main()
      ' Persist the date and time data.
      Dim sw As New StreamWriter(".\DateData.dat")
      
      ' Create a DateTime value.      
      Dim dtIn As DateTime = DateTime.Now
      ' Retrieve a CultureInfo object.
      Dim invC As CultureInfo = 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.
      Dim sr As New StreamReader(".\DateData.dat")
      Dim input As String = String.Empty
      Do While sr.Peek() >= 0 
         input = sr.ReadLine()
         Console.WriteLine("Stored data: {0}" , input)    
         Console.WriteLine()
         
         ' Parse the stored string.
         Dim dtOut As DateTime = DateTime.Parse(input, invC, DateTimeStyles.RoundtripKind)

         ' Create a French (France) CultureInfo object.
         Dim frFr As 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.
         Dim deDe As 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))
      Loop
      sr.Close()
   End Sub
End Module
' 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

Güvenlik kararları

Dize karşılaştırması veya büyük/küçük harf değişikliği sonucuna bağlı olarak bir güvenlik kararı (örneğin, bir sistem kaynağına erişime izin verilip verilmeyeceği) oluşturuyorsanız, sabit kültürü kullanmamalısınız. Bunun yerine, parametre içeren bir yöntemi çağırarak ve ya da bağımsız değişken olarak sağlayarak StringComparison.Ordinal büyük/küçük harfe duyarlı veya StringComparison.OrdinalIgnoreCase büyük/küçük harfe duyarlı olmayan sıralı StringComparison bir karşılaştırma gerçekleştirmeniz gerekir. Kültüre duyarlı dize işlemleri gerçekleştiren kod, geçerli kültür değiştirilirse veya kodu çalıştıran bilgisayardaki kültür kodu test etmek için kullanılan kültürden farklıysa güvenlik açıklarına neden olabilir. Buna karşılık sıralı karşılaştırma yalnızca karşılaştırılan karakterlerin ikili değerine bağlıdır.