CultureInfo.DefaultThreadCurrentCulture CultureInfo.DefaultThreadCurrentCulture CultureInfo.DefaultThreadCurrentCulture CultureInfo.DefaultThreadCurrentCulture Property

定義

現在のアプリケーション ドメインのスレッドの既定のカルチャを取得または設定します。Gets or sets the default culture for threads in the current application domain.

public:
 static property System::Globalization::CultureInfo ^ DefaultThreadCurrentCulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public static System.Globalization.CultureInfo DefaultThreadCurrentCulture { get; set; }
member this.DefaultThreadCurrentCulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentCulture As CultureInfo

プロパティ値

現在のアプリケーション ドメインのスレッドの既定のカルチャ、または現在のシステム カルチャがアプリケーション ドメインの既定のスレッド カルチャの場合は nullThe default culture for threads in the current application domain, or null if the current system culture is the default thread culture in the application domain.

次の例は、新しいスレッドの現在のカルチャを定義する際の .NET Framework の既定の動作を示しています。The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. この例では、起動時に、既定のシステムカルチャが既にフランス語 (フランス) の場合を除き、すべてのシステムで現在のカルチャと現在の UI カルチャをフランス語 (フランス) に設定します。At startup, the example sets the current culture and the current UI culture to French (France) on all systems except those on which the default system culture is already French (France). 既定のシステムカルチャが既にフランス語 (フランス) の場合、コードは現在のカルチャと現在の UI カルチャを英語 (米国) に設定します。If the default system culture is already French (France), the code sets the current culture and the current UI culture to English (United States). 次に、このDisplayRandomNumbersルーチンを呼び出して、3つの乱数を生成し、通貨値として表示します。It then calls the DisplayRandomNumbers routine, which generates three random numbers and displays them as currency values. 次に、新しいスレッドを作成します。これにDisplayRandomNumbersより、ルーチンも実行されます。Next, it creates a new thread, which also executes the DisplayRandomNumbers routine.

using System;
using System.Globalization;
using System.Text;
using System.Threading;

public class Example
{
   public static void Main()
   {
      Console.OutputEncoding = Encoding.UTF8; 
      // Change current culture
      CultureInfo culture;
      if (Thread.CurrentThread.CurrentCulture.Name == "fr-FR")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("fr-FR");

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;
      
      // Generate and display three random numbers on the current thread.
      DisplayRandomNumbers();
      Thread.Sleep(1000);
      
      Thread workerThread = new Thread(new ThreadStart(Example.DisplayRandomNumbers));
      workerThread.Start();
   }

   private static void DisplayRandomNumbers()
   {
      Console.WriteLine();
      Console.WriteLine("Current Culture:    {0}", 
                        Thread.CurrentThread.CurrentCulture);
      Console.WriteLine("Current UI Culture: {0}", 
                        Thread.CurrentThread.CurrentUICulture);

      Console.Write("Random Values: ");
      Random rand = new Random();
      for (int ctr = 0; ctr <= 2; ctr++)
         Console.Write("     {0:C2}     ", rand.NextDouble());

      Console.WriteLine();
   }
}
// The example displays output similar to the following:
//    Current Culture:    fr-FR
//    Current UI Culture: fr-FR
//    Random Values:      0,77 €          0,35 €          0,52 €     
//    
//    Current Culture:    en-US
//    Current UI Culture: en-US
//    Random Values:      $0.30          $0.79          $0.65     
Imports System.Globalization
Imports System.Text
Imports System.Threading

Module Example

   Public Sub Main()
      Console.OutputEncoding = Encoding.UTF8 
      ' Change current culture
      Dim culture As CultureInfo
      If Thread.CurrentThread.CurrentCulture.Name = "fr-FR" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("fr-FR")
      End If   
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture
      
      ' Generate and display three random numbers on the current thread.
      DisplayRandomNumbers()
      Thread.Sleep(1000)
      
      Dim workerThread As New Thread(AddressOf Example.DisplayRandomNumbers)
      workerThread.Start()
   End Sub
   
   Private Sub DisplayRandomNumbers()
      Console.WriteLine()
      Console.WriteLine("Current Culture:    {0}", 
                        Thread.CurrentThread.CurrentCulture)
      Console.WriteLine("Current UI Culture: {0}", 
                        Thread.CurrentThread.CurrentUICulture)

      Console.Write("Random Values: ")
      Dim rand As New Random()
      For ctr As Integer = 0 To 2
         Console.Write("     {0:C2}     ", rand.NextDouble())
      Next      
      Console.WriteLine()
   End Sub
End Module
' The example displays output similar to the following:
'    Current Culture:    fr-FR
'    Current UI Culture: fr-FR
'    Random Values:      0,77 €          0,35 €          0,52 €     
'    
'    Current Culture:    en-US
'    Current UI Culture: en-US
'    Random Values:      $0.30          $0.79          $0.65     

この例の出力に示すように、システムカルチャが英語 (米国) であるコンピューターでこの例を実行すると、メインスレッドはフランス語 (フランス) カルチャの書式指定規則を使用して通貨値を表示します。As the output from the example shows, when the example is run on a computer whose system culture is English (United States), the main thread displays its currency values using the formatting conventions of the French (France) culture. ただし、ワーカースレッドのカルチャは、アプリケーションの現在のカルチャではなく、現在の Windows システムカルチャから派生しているため、作業スレッドは英語 (米国) カルチャの書式指定規則を使用して通貨値を表示します。However, because the worker thread's culture is derived from the current Windows system culture rather than the application's current culture, the work thread displays its currency values using the formatting conventions of the English (United States) culture.

次の例ではDefaultThreadCurrentCultureDefaultThreadCurrentUICultureプロパティとプロパティを使用して、新しいアプリケーションスレッドの現在のカルチャと現在の UI カルチャを定義しています。The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread. この例では、起動時に、既定のシステムカルチャが既にフランス語 (フランス) の場合を除き、すべてのシステムで現在のカルチャと現在の UI カルチャをフランス語 (フランス) に設定します。At startup, the example sets the current culture and the current UI culture to French (France) on all systems except those on which the default system culture is already French (France). 既定のシステムカルチャが既にフランス語 (フランス) である場合は、現在のカルチャと現在の UI カルチャが英語 (米国) に設定されます。If the default system culture is already French (France), it sets the current culture and the current UI culture to English (United States). 次に、このDisplayRandomNumbersルーチンを呼び出して、3つの乱数を生成し、通貨値として表示します。It then calls the DisplayRandomNumbers routine, which generates three random numbers and displays them as currency values. 次に、新しいスレッドを作成します。これにDisplayRandomNumbersより、ルーチンも実行されます。Next, it creates a new thread, which also executes the DisplayRandomNumbers routine.

using System;
using System.Globalization;
using System.Text;
using System.Threading;

public class Example
{
   public static void Main()
   {
      Console.OutputEncoding = Encoding.UTF8; 
      // Change current culture
      CultureInfo culture;
      if (Thread.CurrentThread.CurrentCulture.Name == "fr-FR")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("fr-FR");
      
      CultureInfo.DefaultThreadCurrentCulture = culture;
      CultureInfo.DefaultThreadCurrentUICulture = culture;

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;
      
      // Generate and display three random numbers on the current thread.
      DisplayRandomNumbers();
      Thread.Sleep(1000);
      
      Thread workerThread = new Thread(new ThreadStart(Example.DisplayRandomNumbers));
      workerThread.Start();
   }

   private static void DisplayRandomNumbers()
   {
      Console.WriteLine();
      Console.WriteLine("Current Culture:    {0}", 
                        Thread.CurrentThread.CurrentCulture);
      Console.WriteLine("Current UI Culture: {0}", 
                        Thread.CurrentThread.CurrentUICulture);

      Console.Write("Random Values: ");
      Random rand = new Random();
      for (int ctr = 0; ctr <= 2; ctr++)
         Console.Write("     {0:C2}     ", rand.NextDouble());

      Console.WriteLine();
   }
}
// The example displays output similar to the following:
//    Current Culture:    fr-FR
//    Current UI Culture: fr-FR
//    Random Values:      0,78 €          0,80 €          0,37 €
//    
//    Current Culture:    fr-FR
//    Current UI Culture: fr-FR
//    Random Values:      0,52 €          0,32 €          0,15 €
Imports System.Globalization
Imports System.Text
Imports System.Threading

Module Example
   Public Sub Main()
      Console.OutputEncoding = Encoding.UTF8 
      ' Change current culture
      Dim culture As CultureInfo
      
      If Thread.CurrentThread.CurrentCulture.Name = "fr-FR" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("fr-FR")
      End If   
      CultureInfo.DefaultThreadCurrentCulture = culture
      CultureInfo.DefaultThreadCurrentUICulture = culture
      
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture
      
      ' Generate and display three random numbers on the current thread.
      DisplayRandomNumbers()
      Thread.Sleep(1000)
      
      Dim workerThread As New Thread(AddressOf Example.DisplayRandomNumbers)
      workerThread.Start()
   End Sub
   
   Private Sub DisplayRandomNumbers()
      Console.WriteLine()
      Console.WriteLine("Current Culture:    {0}", 
                        Thread.CurrentThread.CurrentCulture)
      Console.WriteLine("Current UI Culture: {0}", 
                        Thread.CurrentThread.CurrentUICulture)
      Console.Write("Random Values: ")
      Dim rand As New Random()
      For ctr As Integer = 0 To 2
         Console.Write("     {0:C2}     ", rand.NextDouble())
      Next      
      Console.WriteLine()
   End Sub
End Module
' The example displays output similar to the following:
'    Current Culture:    fr-FR
'    Current UI Culture: fr-FR
'    Random Values:      0,78 €          0,80 €          0,37 €
'    
'    Current Culture:    fr-FR
'    Current UI Culture: fr-FR
'    Random Values:      0,52 €          0,32 €          0,15 €

この例の出力に示すように、システムカルチャが英語 (米国) であるコンピューターでこの例を実行すると、メインスレッドとワーカースレッドの両方でフランス語 (フランス) カルチャの書式指定規則を使用して通貨値が表示されます。As the output from the example shows, when the example is run on a computer whose system culture is English (United States), both the main thread and the worker thread display their currency values using the formatting conventions of the French (France) culture.

注釈

.NET Framework 4.NET Framework 4とそれ以前のバージョンでは、既定で、すべてのスレッドのカルチャが Windows システムカルチャに設定されています。In the .NET Framework 4.NET Framework 4 and previous versions, by default, the culture of all threads is set to the Windows system culture. 現在のカルチャが既定のシステムカルチャと異なるアプリケーションの場合、この動作は望ましくないことがあります。For applications whose current culture differs from the default system culture, this behavior is often undesirable. では、プロパティを使用して、アプリケーションドメイン内のすべてのスレッドの既定のカルチャをアプリケーションで定義できます。 DefaultThreadCurrentCulture .NET Framework 4.5.NET Framework 4.5In the .NET Framework 4.5.NET Framework 4.5, the DefaultThreadCurrentCulture property enables an application to define the default culture of all threads in an application domain.

重要

アプリケーションドメインでを実行している既存のスレッドのカルチャを明示的に設定してDefaultThreadCurrentCultureいない場合は、プロパティを設定すると、これらのスレッドのカルチャも変更されます。If you have not explicitly set the culture of any existing threads executing in an application domain, setting the DefaultThreadCurrentCulture property also changes the culture of these threads. ただし、これらのスレッドが別のアプリケーションドメインで実行される場合、そのDefaultThreadCurrentCultureカルチャは、そのアプリケーションドメインのプロパティによって定義されます。既定値が定義されていない場合は、既定のシステムカルチャによって定義されます。However, if these threads execute in another application domain, their culture is defined by the DefaultThreadCurrentCulture property in that application domain or, if no default value is defined, by the default system culture. このため、メインアプリケーションスレッドのカルチャは常に明示的に設定することをお勧めします。またDefaultThreadCurrentCulture 、プロパティに依存せずに、メインアプリケーションスレッドのカルチャを定義することをお勧めします。Because of this, we recommend that you always explicitly set the culture of your main application thread, and not rely on the DefaultThreadCurrentCulture property to define the culture of the main application thread.

明示的に設定されていない限りDefaultThreadCurrentCulture 、プロパティnullの値はであり、明示的なカルチャが割り当てられていないアプリケーションドメイン内のスレッドのカルチャは、既定の Windows システムカルチャによって定義されます。Unless it is set explicitly, the value of the DefaultThreadCurrentCulture property is null, and the culture of threads in an application domain that have not been assigned an explicit culture is defined by the default Windows system culture.

カルチャ、スレッド、およびアプリケーションドメインの詳細については、 CultureInfoリファレンスページの「カルチャとスレッド」と「カルチャおよびアプリケーションドメイン」を参照してください。For more information about cultures, threads, and application domains, see the "Culture and threads" and "Culture and application domains" sections in the CultureInfo reference page.

適用対象

こちらもご覧ください