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. .NET Framework 4.5.NET Framework 4.5DefaultThreadCurrentCultureプロパティにより、アプリケーション ドメイン内のすべてのスレッドの既定のカルチャを定義するアプリケーション。In 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.

適用対象

こちらもご覧ください