CultureInfo CultureInfo CultureInfo CultureInfo Class

Definizione

Fornisce informazioni su impostazioni cultura specifiche, ovvero impostazioni locali per lo sviluppo di codice non gestito.Provides information about a specific culture (called a locale for unmanaged code development). Le informazioni includono i nomi delle impostazioni cultura, il sistema di scrittura, il calendario usato, l'ordinamento delle stringhe e la formattazione di date e numeri.The information includes the names for the culture, the writing system, the calendar used, the sort order of strings, and formatting for dates and numbers.

public ref class CultureInfo : ICloneable, IFormatProvider
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class CultureInfo : ICloneable, IFormatProvider
type CultureInfo = class
    interface ICloneable
    interface IFormatProvider
Public Class CultureInfo
Implements ICloneable, IFormatProvider
Ereditarietà
CultureInfoCultureInfoCultureInfoCultureInfo
Attributi
Implementazioni

Esempi

Nell'esempio seguente viene illustrato come creare un CultureInfo oggetto per spagnolo (Spagna) con l'ordinamento internazionale e un CultureInfo altro oggetto con l'ordinamento tradizionale.The following example shows how to create a CultureInfo object for Spanish (Spain) with the international sort and another CultureInfo object with the traditional sort.

using namespace System;
using namespace System::Collections;
using namespace System::Globalization;
int main()
{
   
   // Creates and initializes the CultureInfo which uses the international sort.
   CultureInfo^ myCIintl = gcnew CultureInfo( "es-ES",false );
   
   // Creates and initializes the CultureInfo which uses the traditional sort.
   CultureInfo^ myCItrad = gcnew CultureInfo( 0x040A,false );
   
   // Displays the properties of each culture.
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL" );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl->CompareInfo, myCItrad->CompareInfo );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl->DisplayName, myCItrad->DisplayName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl->EnglishName, myCItrad->EnglishName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl->IsNeutralCulture, myCItrad->IsNeutralCulture );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl->IsReadOnly, myCItrad->IsReadOnly );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "LCID", myCIintl->LCID, myCItrad->LCID );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "Name", myCIintl->Name, myCItrad->Name );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl->NativeName, myCItrad->NativeName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "Parent", myCIintl->Parent, myCItrad->Parent );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl->TextInfo, myCItrad->TextInfo );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl->ThreeLetterISOLanguageName, myCItrad->ThreeLetterISOLanguageName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl->ThreeLetterWindowsLanguageName, myCItrad->ThreeLetterWindowsLanguageName );
   Console::WriteLine( "{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl->TwoLetterISOLanguageName, myCItrad->TwoLetterISOLanguageName );
   Console::WriteLine();
   
   // Compare two strings using myCIintl -> 
   Console::WriteLine( "Comparing \"llegar\" and \"lugar\"" );
   Console::WriteLine( "   With myCIintl -> CompareInfo -> Compare: {0}", myCIintl->CompareInfo->Compare( "llegar", "lugar" ) );
   Console::WriteLine( "   With myCItrad -> CompareInfo -> Compare: {0}", myCItrad->CompareInfo->Compare( "llegar", "lugar" ) );
}

/*
This code produces the following output.

PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
DisplayName                    Spanish (Spain)                                Spanish (Spain)          
EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
IsNeutralCulture               False                                          False                    
IsReadOnly                     False                                          False                    
LCID                           3082                                           1034                     
Name                           es-ES                                          es-ES                    
NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
Parent                         es                                             es                       
TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
ThreeLetterISOLanguageName     spa                                            spa                      
ThreeLetterWindowsLanguageName ESN                                            ESP                      
TwoLetterISOLanguageName       es                                             es                       

Comparing "llegar" and "lugar"
   With myCIintl -> CompareInfo -> Compare: -1
   With myCItrad -> CompareInfo -> Compare: 1

*/
using System;
using System.Collections;
using System.Globalization;

public class SamplesCultureInfo
{

   public static void Main()
   {

      // Creates and initializes the CultureInfo which uses the international sort.
      CultureInfo myCIintl = new CultureInfo("es-ES", false);

      // Creates and initializes the CultureInfo which uses the traditional sort.
      CultureInfo myCItrad = new CultureInfo(0x040A, false);

      // Displays the properties of each culture.
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL");
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Name", myCIintl.Name, myCItrad.Name);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName);
      Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName);
      Console.WriteLine();

      // Compare two strings using myCIintl.
      Console.WriteLine("Comparing \"llegar\" and \"lugar\"");
      Console.WriteLine("   With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare("llegar", "lugar"));
      Console.WriteLine("   With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare("llegar", "lugar"));

   }

}

/*
This code produces the following output.

PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
DisplayName                    Spanish (Spain)                                Spanish (Spain)          
EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
IsNeutralCulture               False                                          False                    
IsReadOnly                     False                                          False                    
LCID                           3082                                           1034                     
Name                           es-ES                                          es-ES                    
NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
Parent                         es                                             es                       
TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
ThreeLetterISOLanguageName     spa                                            spa                      
ThreeLetterWindowsLanguageName ESN                                            ESP                      
TwoLetterISOLanguageName       es                                             es                       

Comparing "llegar" and "lugar"
   With myCIintl.CompareInfo.Compare: -1
   With myCItrad.CompareInfo.Compare: 1

*/
Imports System.Collections
Imports System.Globalization

Module Module1

    Public Sub Main()

        ' Creates and initializes the CultureInfo which uses the international sort.
        Dim myCIintl As New CultureInfo("es-ES", False)

        ' Creates and initializes the CultureInfo which uses the traditional sort.
        Dim myCItrad As New CultureInfo(&H40A, False)

        ' Displays the properties of each culture.
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "PROPERTY", "INTERNATIONAL", "TRADITIONAL")
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "CompareInfo", myCIintl.CompareInfo, myCItrad.CompareInfo)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "DisplayName", myCIintl.DisplayName, myCItrad.DisplayName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "EnglishName", myCIintl.EnglishName, myCItrad.EnglishName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsNeutralCulture", myCIintl.IsNeutralCulture, myCItrad.IsNeutralCulture)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "IsReadOnly", myCIintl.IsReadOnly, myCItrad.IsReadOnly)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "LCID", myCIintl.LCID, myCItrad.LCID)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Name", myCIintl.Name, myCItrad.Name)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "NativeName", myCIintl.NativeName, myCItrad.NativeName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "Parent", myCIintl.Parent, myCItrad.Parent)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TextInfo", myCIintl.TextInfo, myCItrad.TextInfo)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterISOLanguageName", myCIintl.ThreeLetterISOLanguageName, myCItrad.ThreeLetterISOLanguageName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "ThreeLetterWindowsLanguageName", myCIintl.ThreeLetterWindowsLanguageName, myCItrad.ThreeLetterWindowsLanguageName)
        Console.WriteLine("{0,-31}{1,-47}{2,-25}", "TwoLetterISOLanguageName", myCIintl.TwoLetterISOLanguageName, myCItrad.TwoLetterISOLanguageName)
        Console.WriteLine()

        ' Compare two strings using myCIintl.
        Console.WriteLine("Comparing ""llegar"" and ""lugar""")
        Console.WriteLine("   With myCIintl.CompareInfo.Compare: {0}", myCIintl.CompareInfo.Compare("llegar", "lugar"))
        Console.WriteLine("   With myCItrad.CompareInfo.Compare: {0}", myCItrad.CompareInfo.Compare("llegar", "lugar"))

    End Sub



'This code produces the following output.
'
'PROPERTY                       INTERNATIONAL                                  TRADITIONAL              
'CompareInfo                    CompareInfo - es-ES                            CompareInfo - es-ES_tradnl
'DisplayName                    Spanish (Spain)                                Spanish (Spain)          
'EnglishName                    Spanish (Spain, International Sort)            Spanish (Spain, Traditional Sort)
'IsNeutralCulture               False                                          False                    
'IsReadOnly                     False                                          False                    
'LCID                           3082                                           1034                     
'Name                           es-ES                                          es-ES                    
'NativeName                     Español (España, alfabetización internacional) Español (España, alfabetización tradicional)
'Parent                         es                                             es                       
'TextInfo                       TextInfo - es-ES                               TextInfo - es-ES_tradnl  
'ThreeLetterISOLanguageName     spa                                            spa                      
'ThreeLetterWindowsLanguageName ESN                                            ESP                      
'TwoLetterISOLanguageName       es                                             es                       
'
'Comparing "llegar" and "lugar"
'   With myCIintl.CompareInfo.Compare: -1
'   With myCItrad.CompareInfo.Compare: 1

End Module

Commenti

La CultureInfo classe fornisce informazioni specifiche delle impostazioni cultura, ad esempio lingua, lingua secondaria, paese/area geografica, calendario e convenzioni associate a impostazioni cultura specifiche.The CultureInfo class provides culture-specific information, such as the language, sublanguage, country/region, calendar, and conventions associated with a particular culture. Questa classe fornisce anche l'accesso alle istanze specifiche delle impostazioni cultura DateTimeFormatInfodegli NumberFormatInfooggetti CompareInfo,, TextInfo e.This class also provides access to culture-specific instances of the DateTimeFormatInfo, NumberFormatInfo, CompareInfo, and TextInfo objects. Questi oggetti contengono le informazioni necessarie per operazioni specifiche delle impostazioni cultura, ad esempio la combinazione di maiuscole e minuscole, la formattazione di date e numeri e il confronto di stringhe.These objects contain the information required for culture-specific operations, such as casing, formatting dates and numbers, and comparing strings. La CultureInfo classe viene utilizzata direttamente o indirettamente dalle classi che formattano, analizzano o modificano i dati specifici delle impostazioni cultura String, DateTimead DateTimeOffsetesempio,, e i tipi numerici.The CultureInfo class is used either directly or indirectly by classes that format, parse, or manipulate culture-specific data, such as String, DateTime, DateTimeOffset, and the numeric types.

Contenuto della sezione:In this section:

Identificatori e nomi delle impostazioni cultura Culture names and identifiers
Impostazioni cultura invarianti, neutre e specifiche Invariant, neutral, and specific cultures
Impostazioni cultura personalizzate Custom cultures
Dati dinamici delle impostazioni cultura Dynamic culture data
CultureInfo e dati culturali Impostazioni cultura correnti e impostazioni cultura correnti dell'interfaccia utente CultureInfo and cultural data The current culture and current UI culture
Recupero di tutte le impostazioni cultura Getting all cultures
Impostazioni cultura e thread Culture and threads
Impostazioni cultura e domini applicazione Culture and application domains
Impostazioni cultura e operazioni asincrone basate su attività Culture and task-based asynchronous operations
Serializzazione dell'oggetto CultureInfo CultureInfo object serialization
Override del pannello di controllo Control Panel overrides
Ordinamenti alternativi Alternate sort orders
Impostazioni cultura e app di WindowsCulture and Windows apps

Identificatori e nomi delle impostazioni culturaCulture names and identifiers

La CultureInfo classe specifica un nome univoco per ogni lingua, in base allo standard RFC 4646.The CultureInfo class specifies a unique name for each culture, based on RFC 4646. Il nome è una combinazione di un codice di impostazioni cultura minuscole ISO 639 2-lettera associato a una lingua e un codice di sottocultura maiuscolo ISO 3166 2-lettera associato a un paese o un'area geografica.The name is a combination of an ISO 639 two-letter lowercase culture code associated with a language and an ISO 3166 two-letter uppercase subculture code associated with a country or region. Inoltre, per le app destinate .NET Framework 4.NET Framework 4 a o versioni successive e che sono in esecuzione in Windows 10 o versioni successive, sono supportati i nomi delle impostazioni cultura che corrispondono ai tag di lingua BCP-47 validi.In addition, for apps that target .NET Framework 4.NET Framework 4 or later and are running under Windows 10 or later, culture names that correspond to valid BCP-47 language tags are supported.

Nota

Quando un nome di impostazioni cultura viene passato a un costruttore di classe o a CreateSpecificCulture un CultureInfometodo come o, il relativo case non è significativo.When a culture name is passed to a class constructor or a method such as CreateSpecificCulture or CultureInfo, its case is not significant.

Il formato del nome delle impostazioni cultura basato su RFC 4646 è codicelingua2>-Country/codicepaese2, dove codicelingua2 è il codice della lingua a due lettere e Country/codicepaese2 è il codice della sottocultura di due lettere.The format for the culture name based on RFC 4646 is languagecode2>-country/regioncode2, where languagecode2 is the two-letter language code and country/regioncode2 is the two-letter subculture code. Gli esempi includono ja-JP per il giapponese (Giappone) e en-US per la lingua inglese (Stati Uniti).Examples include ja-JP for Japanese (Japan) and en-US for English (United States). Nei casi in cui non è disponibile un codice di lingua di due lettere, viene usato un codice di tre lettere derivato da ISO 639-2.In cases where a two-letter language code is not available, a three-letter code derived from ISO 639-2 is used.

Si noti che alcuni nomi di impostazioni cultura specificano anche uno script ISO 15924.Note that some culture names also specify an ISO 15924 script. Ad esempio, Cyrl specifica lo script cirillico e Latn specifica lo script latino.For example, Cyrl specifies the Cyrillic script and Latn specifies the Latin script. Un nome di impostazioni cultura che include uno script usa il modello codicelingua2-scripttag-Country/codicepaese2.A culture name that includes a script uses the pattern languagecode2-scripttag-country/regioncode2. Un esempio di questo tipo di nome delle impostazioni cultura è UZ-Cyrl-UZ per Uzbeco (alfabeto cirillico, Uzbekistan).An example of this type of culture name is uz-Cyrl-UZ for Uzbek (Cyrillic, Uzbekistan). Nei sistemi operativi Windows precedenti a Windows Vista, un nome di impostazioni cultura che include uno script usa il modello codicelingua2-Country/codicepaese2-scripttag, ad esempio uz-UZ-Cyrl per Uzbeco (alfabeto cirillico, Uzbekistan).On Windows operating systems before Windows Vista, a culture name that includes a script uses the pattern languagecode2-country/regioncode2-scripttag, for example, uz-UZ-Cyrl for Uzbek (Cyrillic, Uzbekistan).

Le impostazioni cultura non associate ad alcun paese vengono specificate solo dal codice della lingua minuscola a due lettere.A neutral culture is specified by only the two-letter lowercase language code. Ad esempio, fr specifica le impostazioni cultura neutre per il francese e de specifica le impostazioni cultura non associate ad alcun paese per il tedesco.For example, fr specifies the neutral culture for French, and de specifies the neutral culture for German.

Nota

Sono presenti due nomi di impostazioni cultura che contraddicono questa regola.There are two culture names that contradict this rule. Le culture cinesi (semplificate), denominate zh-Hans e cinese (tradizionale), denominate zh-Hant, sono impostazioni cultura non associate ad alcun paese.The cultures Chinese (Simplified), named zh-Hans, and Chinese (Traditional), named zh-Hant, are neutral cultures. I nomi delle impostazioni cultura rappresentano lo standard corrente e devono essere usati a meno che non esista un motivo per usare i nomi precedenti zh-CHS e zh-CHT.The culture names represent the current standard and should be used unless you have a reason for using the older names zh-CHS and zh-CHT.

Un identificatore di impostazioni cultura è un'abbreviazione numerica internazionale standard e include i componenti necessari per identificare in modo univoco una delle impostazioni cultura installate.A culture identifier is a standard international numeric abbreviation and has the components necessary to uniquely identify one of the installed cultures. L'applicazione può usare identificatori di impostazioni cultura predefiniti o definire identificatori personalizzati.Your application can use predefined culture identifiers or define custom identifiers.

Alcuni nomi e identificatori di impostazioni cultura predefiniti vengono usati da questa e da altre classi System.Globalization nello spazio dei nomi.Certain predefined culture names and identifiers are used by this and other classes in the System.Globalization namespace. Per informazioni dettagliate sulle impostazioni cultura per i sistemi Windows, vedere la colonna tag lingua nell' elenco dei nomi di lingua/area supportati da Windows.For detailed culture information for Windows systems, see the Language tag column in the list of language/region names supported by Windows. I nomi delle impostazioni cultura seguono lo standard definito da BCP 47.Culture names follow the standard defined by BCP 47.

Tenere presente che i nomi e gli identificatori delle impostazioni cultura rappresentano solo un subset di impostazioni cultura che è possibile trovare in un determinato computer.Remember that the culture names and identifiers represent only a subset of cultures that can be found on a particular computer. Le versioni di Windows o i Service Pack possono modificare le impostazioni cultura disponibili.Windows versions or service packs can change the available cultures. Le applicazioni aggiungono impostazioni cultura CultureAndRegionInfoBuilder personalizzate usando la classe.Applications add custom cultures using the CultureAndRegionInfoBuilder class. Gli utenti aggiungono le proprie impostazioni cultura personalizzate mediante lo strumento generatore di impostazioni locali Microsoft.Users add their own custom cultures using the Microsoft Locale Builder tool. Il generatore di impostazioni locali Microsoft viene scritto in codice gestito CultureAndRegionInfoBuilder utilizzando la classe.Microsoft Locale Builder is written in managed code using the CultureAndRegionInfoBuilder class.

Molti nomi distinti sono strettamente associati a impostazioni cultura, in particolare i nomi associati ai membri della classe seguenti:Several distinct names are closely associated with a culture, notably the names associated with the following class members:

Impostazioni cultura invarianti, neutre e specificheInvariant, neutral, and specific cultures

Le impostazioni cultura vengono in genere raggruppate in tre set: impostazioni cultura invarianti, impostazioni cultura non associate ad alcun paese e impostazioni cultura specifiche.The cultures are generally grouped into three sets: invariant cultures, neutral cultures, and specific cultures.

Le impostazioni cultura invarianti sono indipendenti dalle impostazioni cultura.An invariant culture is culture-insensitive. L'applicazione specifica le impostazioni cultura invarianti per nome usando una stringa vuota ("") o il relativo identificatore.Your application specifies the invariant culture by name using an empty string ("") or by its identifier. InvariantCulturedefinisce un'istanza della lingua inglese.InvariantCulture defines an instance of the invariant culture. È associato alla lingua inglese, ma non a un paese/area geografica.It is associated with the English language but not with any country/region. Viene usato in quasi tutti i Globalization metodi dello spazio dei nomi che richiedono impostazioni cultura.It is used in almost any method in the Globalization namespace that requires a culture.

Le impostazioni cultura non associate ad alcun paese sono impostazioni cultura associate a una lingua, ma non a un paese/area geografica.A neutral culture is a culture that is associated with a language but not with a country/region. Impostazioni cultura specifiche sono impostazioni cultura associate a una lingua e a un paese/area geografica.A specific culture is a culture that is associated with a language and a country/region. Ad esempio, fr è il nome neutro per le impostazioni cultura francesi e fr-FR è il nome delle impostazioni cultura francesi (Francia) specifiche.For example, fr is the neutral name for the French culture, and fr-FR is the name of the specific French (France) culture. Si noti che il cinese (semplificato) e il cinese (tradizionale) sono considerati anche impostazioni cultura non associate ad alcun paese.Note that Chinese (Simplified) and Chinese (Traditional) are also considered neutral cultures.

La creazione di un'istanza CompareInfo di una classe per impostazioni cultura non associate ad alcun paese non è consigliata perché i dati in esso contenuti sono arbitrari.Creating an instance of a CompareInfo class for a neutral culture is not recommended because the data it contains is arbitrary. Per visualizzare e ordinare i dati, specificare la lingua e l'area.To display and sort data, specify both the language and region. Inoltre, la Name proprietà di un CompareInfo oggetto creato per le impostazioni cultura non associate ad alcun paese restituisce solo il paese e non include l'area.Additionally, the Name property of a CompareInfo object created for a neutral culture returns only the country and does not include the region.

Le impostazioni cultura definite hanno una gerarchia in cui l'elemento padre di impostazioni cultura specifiche è costituito da impostazioni cultura non associate ad alcun paese e l'elemento padre di impostazioni cultura non associate ad alcun paese è la lingua inglese.The defined cultures have a hierarchy in which the parent of a specific culture is a neutral culture and the parent of a neutral culture is the invariant culture. La Parent proprietà contiene le impostazioni cultura non associate ad alcun paese associate a impostazioni cultura specifiche.The Parent property contains the neutral culture associated with a specific culture. Le impostazioni cultura personalizzate devono Parent definire la proprietà in conformità con questo modello.Custom cultures should define the Parent property in conformance with this pattern.

Se le risorse per impostazioni cultura specifiche non sono disponibili nel sistema operativo, vengono usate le risorse per le impostazioni cultura non associate ad alcun paese.If the resources for a specific culture are not available in the operating system, the resources for the associated neutral culture are used. Se le risorse per le impostazioni cultura non associate ad alcun paese non sono disponibili, vengono usate le risorse incorporate nell'assembly principale.If the resources for the neutral culture are not available, the resources embedded in the main assembly are used. Per altre informazioni sul processo di fallback delle risorse, vedere Creazione del pacchetto e distribuzione delle risorse.For more information on the resource fallback process, see Packaging and Deploying Resources.

L'elenco delle impostazioni locali nell'API Windows è leggermente diverso dall'elenco delle impostazioni cultura supportate dal .NET Framework.The list of locales in the Windows API is slightly different from the list of cultures supported by the .NET Framework. Se è necessaria l'interoperabilità con Windows, ad esempio tramite il meccanismo p/invoke, l'applicazione deve usare impostazioni cultura specifiche definite per il sistema operativo.If interoperability with Windows is required, for example, through the p/invoke mechanism, the application should use a specific culture that is defined for the operating system. L'uso delle impostazioni cultura specifiche garantisce la coerenza con le impostazioni locali di Windows equivalenti, identificate con un identificatore delle impostazioni locali identico LCIDa.Use of the specific culture ensures consistency with the equivalent Windows locale, which is identified with a locale identifier that is the same as LCID.

È DateTimeFormatInfo NumberFormatInfo possibile creare un oggetto o solo per le impostazioni cultura invarianti o per impostazioni cultura specifiche, non per le impostazioni cultura non associate ad alcun paese.A DateTimeFormatInfo or a NumberFormatInfo can be created only for the invariant culture or for specific cultures, not for neutral cultures.

Se DateTimeFormatInfo.Calendar DateTimeFormatInfo.GetAbbreviatedEraName è, maThread.CurrentCulture non è impostatosuzh-TW,,erestituisconounastringavuota("").DateTimeFormatInfo.GetEraName DateTimeFormatInfo.NativeCalendarName TaiwanCalendarIf DateTimeFormatInfo.Calendar is the TaiwanCalendar but the Thread.CurrentCulture is not set to zh-TW, then DateTimeFormatInfo.NativeCalendarName, DateTimeFormatInfo.GetEraName, and DateTimeFormatInfo.GetAbbreviatedEraName return an empty string ("").

Impostazioni cultura personalizzateCustom cultures

Oltre alle impostazioni cultura predefinite supportate dal sistema operativo Windows e dalla .NET Framework, il .NET Framework supporta tre tipi di impostazioni cultura personalizzate:In addition to the predefined cultures supported by the Windows operating system and the .NET Framework, the .NET Framework supports three types of custom cultures:

  • Nuove impostazioni cultura che integrano le impostazioni cultura disponibili in Windows o nel .NET Framework.New cultures that supplement the cultures available in Windows or the .NET Framework. Ad esempio, un'applicazione può installare un CultureInfo oggetto che rappresenta le impostazioni cultura fj-FJ (o Fijan (Figi)) in un sistema.For example, an application could install a CultureInfo object that represents the fj-FJ (or Fijan (Fiji)) culture on a system.

  • Impostazioni cultura di sostituzione le cui proprietà sono diverse dalle proprietà delle impostazioni cultura standard supportate da Windows e dal .NET Framework.Replacement cultures whose properties are different from the properties of the standard cultures supported by Windows and the .NET Framework.

  • Impostazioni cultura standard con sostituzioni utente.Standard cultures with user overrides. L'utente può utilizzare l'applicazione Region e Language nel Pannello di controllo per personalizzare i valori delle proprietà delle impostazioni cultura esistenti.The user can use the Region and Language application in Control Panel to customize an existing culture's property values.

Nota

È possibile utilizzare la CultureAndRegionInfoBuilder classe per definire, salvare e registrare impostazioni cultura personalizzate che integrano o sostituiscono le impostazioni cultura esistenti.You can use the CultureAndRegionInfoBuilder class to define, save, and register custom cultures that either supplement or replace existing cultures. Il CultureAndRegionInfoBuilder.Save metodo crea un file delle impostazioni locali LDML (Data Markup Language) che può essere usato per installare impostazioni cultura personalizzate nei sistemi di destinazione.The CultureAndRegionInfoBuilder.Save method creates a Locale Data Markup Language (LDML) file that can be used to install a custom culture on target systems. Per informazioni dettagliate sull'uso della CultureAndRegionInfoBuilder classe per creare nuove impostazioni cultura o per la sostituzione, vedere l'argomento relativo alla CultureAndRegionInfoBuilder classe.For step-by step information on using the CultureAndRegionInfoBuilder class to create a new or replacement culture, see the CultureAndRegionInfoBuilder class topic.

Poiché il .NET Framework supporta impostazioni cultura personalizzate, quando si utilizzano dati specifici delle impostazioni cultura è necessario considerare quanto segue:Because the .NET Framework supports custom cultures, you should consider the following when working with culture-specific data:

  • Le impostazioni cultura personalizzate possono contenere valori che superano gli intervalli delle impostazioni cultura predefinite.Custom cultures can have values that exceed the ranges of the predefined cultures. Alcune impostazioni cultura, ad esempio, hanno nomi di mese insolitamente lunghi, formati di data o ora imprevisti o altri dati insoliti.For example, some cultures have unusually long month names, unexpected date or time formats, or other unusual data.

  • Quando si visualizzano i dati specifici delle impostazioni cultura nell'interfaccia utente, è necessario rispettare le personalizzazioni dell'utente; ad esempio, è possibile che l'utente desideri un formato di data a 24 ore o a una data AAAAMMGG.When you display culture-specific data in the user interface, you should respect the user's customizations; for example, the user might want a 24-hour clock or a yyyyMMdd date format.

  • Tenere presente che le impostazioni cultura personalizzate sostituiscono i valori predefiniti.Remember that custom cultures override default values. Pertanto, non è possibile considerare stabili i dati delle impostazioni cultura.Therefore, you cannot consider culture data to be stable. I nomi dei paesi, i formati numerici e di data e le ortografie possono cambiare in futuro.Country names, number and date formats, and spellings may change in the future. Per serializzare i dati dipendenti dalle impostazioni cultura, ad esempio le stringhe di data e ora, da passare alle funzioni di analisi di data e ora, è necessario utilizzare le impostazioni cultura invarianti o specifiche.If you want to serialize culture-sensitive data such as date and time strings to be passed to the date and time parsing functions, you should use the invariant culture or a specific .

Il CultureTypes valore della proprietà delle impostazioni cultura personalizzate installate in un sistema System.Globalization.CultureTypes include il flag e alle impostazioni cultura personalizzate LCID viene assegnato un LOCALE_CUSTOM_UNSPECIFIED valore di proprietà (0x1000 o 4096).The CultureTypes property value of custom cultures installed on a system includes the System.Globalization.CultureTypes flag, and custom cultures are assigned an LCID property value of LOCALE_CUSTOM_UNSPECIFIED (0x1000, or 4096). Si noti che, a partire da Windows 10, questo valore viene assegnato anche a impostazioni cultura definite dal sistema che non dispongono di dati culturali completi.Note that, starting with Windows 10, this value is also assigned to system-defined cultures that lack complete cultural data.

CultureInfo e dati culturaliCultureInfo and cultural data

.NET deriva i dati culturali da un'ampia gamma di origini, a seconda dell'implementazione, della piattaforma e della versione:.NET derives its cultural data from a one of a variety of sources, depending on implementation, platform, and version:

  • In .NET Framework 3,5 e versioni precedenti, i dati culturali vengono forniti dal sistema operativo Windows e dalla .NET Framework.In .NET Framework 3.5 and earlier versions, cultural data is provided by both the Windows operating system and the .NET Framework.

  • In .NET Framework 4 e versioni successive, i dati culturali vengono forniti dal sistema operativo Windows.In .NET Framework 4 and later versions, cultural data is provided by the Windows operating system.

  • In tutte le versioni di .NET Core in esecuzione in Windows, i dati culturali vengono forniti dal sistema operativo Windows.In all versions of .NET Core running on Windows, cultural data is provided by the Windows operating system.

  • In tutte le versioni di .NET Core in esecuzione su piattaforme UNIX, i dati culturali vengono forniti dalla libreria di International Components for Unicode (ICU).In all versions of .NET Core running on Unix platforms, cultural data is provided by the International Components for Unicode (ICU) Library. La versione specifica della libreria ICU dipende dal singolo sistema operativo.The specific version of the ICU Library depends on the individual operating system.

Per questo motivo, le impostazioni cultura disponibili in una particolare implementazione, piattaforma o versione .NET potrebbero non essere disponibili in un'implementazione, una piattaforma o una versione diversa di .NET.Because of this, a culture available on a particular .NET implementation, platform, or version may not be available on a different .NET implementation, platform, or version.

Alcuni CultureInfo oggetti variano a seconda della piattaforma sottostante.Some CultureInfo objects differ depending on the underlying platform. In particolare, "zh-CN" o cinese (semplificato, Cina) e zh-TW, cinese (tradizionale, Taiwan), sono le impostazioni cultura disponibili nei sistemi Windows, ma sono impostazioni cultura con alias nei sistemi UNIX.In particular, "zh-CN", or Chinese (Simplified, China) and zh-TW, or Chinese (Traditional, Taiwan), are available cultures on Windows systems, but they are aliased cultures on Unix systems. "zh-CN" è un alias per le impostazioni cultura "zh-Hans-CN" e "zh-TW" è un alias per le impostazioni cultura "zh-Hant-TW"."zh-CN" is an alias for the "zh-Hans-CN" culture, and "zh-TW" is an alias for the "zh-Hant-TW" culture. Le GetCultures impostazioni cultura con alias non vengono restituite dalle chiamate al metodo e possono avere valori di proprietà diversi Parent , incluse impostazioni cultura diverse, rispetto alle relative controparti di Windows.Aliased cultures are not returned by calls to the GetCultures method and may have different property values, including different Parent cultures, than their Windows counterparts. Per le impostazioni cultura zh-CN e zh-TW, questi differenes includono quanto segue:For the zh-CN and zh-TW cultures, these differenes include the following:

  • Nei sistemi Windows, le impostazioni cultura padre delle impostazioni cultura "zh-CN" sono "zh-Hans" e le impostazioni cultura padre delle impostazioni cultura "zh-TW" sono "zh-Hant".On Windows systems, the parent culture of the "zh-CN" culture is "zh-Hans", and the parent culture of the "zh-TW" culture is "zh-Hant". Le impostazioni cultura padre di entrambe queste impostazioni cultura sono "zh".The parent culture of both these cultures is "zh". Nei sistemi UNIX gli elementi padre di entrambe le impostazioni cultura sono "zh".On Unix systems, the parents of both cultures are "zh". Ciò significa che, se non si forniscono risorse specifiche delle impostazioni cultura per le impostazioni cultura "zh-CN" o "zh-TW", ma si forniscono risorse per le impostazioni cultura "zh-Hans" o "zh-Hant" neutre, l'applicazione caricherà le risorse per le impostazioni cultura non associate ad alcun paese in Windows ma non in UNIX .This means that, if you don't provide culture-specific resources for the "zh-CN" or "zh-TW" cultures but do provide a resources for the neutral "zh-Hans" or "zh-Hant" culture, your application will load the resources for the neutral culture on Windows but not on Unix. Nei sistemi UNIX è necessario impostare in modo esplicito il thread CurrentUICulture su "zh-Hans" o "zh-Hant".On Unix systems, you must explicitly set the thread's CurrentUICulture to either "zh-Hans" or "zh-Hant".

  • Nei sistemi Windows, la CultureInfo.Equals chiamata a su un'istanza che rappresenta le impostazioni cultura "zh-CN" e la passa a un'istanza "zh-Hans true-CN" restituisce.On Windows systems, calling CultureInfo.Equals on an instance that represents the "zh-CN" culture and passing it a "zh-Hans-CN" instance returns true. Nei sistemi UNIX la chiamata al metodo restituisce false.On Unix systems, the method call returns false. Questo comportamento si applica anche alla Equals chiamata a su un'istanza "zh CultureInfo -TW" e al passaggio di un'istanza "zh-Hant-TW".This behavior also applies to calling Equals on a "zh-TW" CultureInfo instance and passing it a "zh-Hant-Tw" instance.

Dati dinamici delle impostazioni culturaDynamic culture data

Ad eccezione della lingua inglese, i dati delle impostazioni cultura sono dinamici.Except for the invariant culture, culture data is dynamic. Questo vale anche per le impostazioni cultura predefinite.This is true even for the predefined cultures. Ad esempio, i paesi o le aree geografiche adottano nuove valute, modificano l'ortografia delle parole o modificano il calendario preferito e cambiano le definizioni delle impostazioni cultura per tenerne traccia.For example, countries or regions adopt new currencies, change their spellings of words, or change their preferred calendar, and culture definitions change to track this. Le impostazioni cultura personalizzate sono soggette a modifiche senza preavviso e le impostazioni cultura specifiche potrebbero essere sostituite da impostazioni cultura di sostituzione personalizzate.Custom cultures are subject to change without notice, and any specific culture might be overridden by a custom replacement culture. Come illustrato di seguito, inoltre, un singolo utente può eseguire l'override delle preferenze culturali.Also, as discussed below, an individual user can override cultural preferences. Le applicazioni devono sempre ottenere i dati delle impostazioni cultura in fase di esecuzione.Applications should always obtain culture data at run time.

Attenzione

Quando si salvano i dati, l'applicazione deve usare le impostazioni cultura invarianti, un formato binario o uno specifico formato indipendente dalle impostazioni cultura.When saving data, your application should use the invariant culture, a binary format, or a specific culture-independent format. I dati salvati in base ai valori correnti associati a impostazioni cultura specifiche, ad eccezione delle impostazioni cultura invarianti, potrebbero diventare illeggibili o potrebbero cambiare nel senso se le impostazioni cultura cambiano.Data saved according to the current values associated with a particular culture, other than the invariant culture, might become unreadable or might change in meaning if that culture changes.

Impostazioni cultura correnti e impostazioni cultura correnti dell'interfaccia utenteThe current culture and current UI culture

Ogni thread in un'applicazione .NET ha le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente.Every thread in a .NET application has a current culture and a current UI culture. Le impostazioni cultura correnti determinano le convenzioni di formattazione per date, ore, numeri e valori di valuta, l'ordinamento del testo, le convenzioni di combinazione di maiuscole e minuscole e le modalità di confronto delle stringhe.The current culture determines the formatting conventions for dates, times, numbers, and currency values, the sort order of text, casing conventions, and the ways in which strings are compared. Le impostazioni cultura dell'interfaccia utente correnti vengono usate per recuperare le risorse specifiche delle impostazioni cultura in fase di esecuzione.The current UI culture is used to retrieve culture-specific resources at runtime.

Nota

Per informazioni sul modo in cui vengono determinate le impostazioni cultura correnti e correnti dell'interfaccia utente in base ai singoli thread, vedere la sezione impostazioni cultura e thread .For information on how the current and current UI culture is determined on a per-thread basis, see the Culture and threads section. Per informazioni sul modo in cui vengono determinate le impostazioni cultura correnti e correnti dell'interfaccia utente per i thread che eseguono in un nuovo dominio applicazione e sui thread che superano i limiti del dominio applicazione, vedere la sezione impostazioni cultura e domini applicazione .For information on how the current and current UI culture is determined on threads executing in a new application domain, and on threads that cross application domain boundaries, see the Culture and application domains section. Per informazioni sul modo in cui vengono determinati i thread correnti e correnti nei thread che eseguono operazioni asincrone basate su attività, vedere la sezione impostazioni cultura e operazioni asincrone basate su attività .For information on how the current and current is determined on threads performing task-based asynchronous operations, see the Culture and task-based asynchronous operations section.

Per informazioni più dettagliate sulle impostazioni cultura correnti, vedere l' CultureInfo.CurrentCulture argomento relativo alle proprietà.For more detailed information on the current culture, see the CultureInfo.CurrentCulture property topic. Per informazioni più dettagliate sulle impostazioni cultura correnti dell'interfaccia utente, CultureInfo.CurrentUICulture vedere l'argomento relativo alle proprietà.For more detailed information on the current UI culture, see the CultureInfo.CurrentUICulture property topic.

Recupero delle impostazioni cultura dell'interfaccia utente correnti e correntiRetrieving the current and current UI cultures

È possibile ottenere un CultureInfo oggetto che rappresenta le impostazioni cultura correnti in uno dei due modi seguenti:You can get a CultureInfo object that represents the current culture in either of two ways:

Nell'esempio seguente vengono recuperati entrambi i valori di proprietà, vengono confrontati per indicare che sono uguali e viene visualizzato il nome delle impostazioni cultura correnti.The following example retrieves both property values, compares them to show that they are equal, and displays the name of the current culture.

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

public class Example
{
   public static void Main()
   {
      CultureInfo culture1 = CultureInfo.CurrentCulture;
      CultureInfo culture2 = Thread.CurrentThread.CurrentCulture;
      Console.WriteLine("The current culture is {0}", culture1.Name);
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        culture1 == culture2);
   }
}
// The example displays output like the following:
//     The current culture is en-US
//     The two CultureInfo objects are equal: True
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim culture1 As CultureInfo = CultureInfo.CurrentCulture
      Dim culture2 As CultureInfo = Thread.CurrentThread.CurrentCulture
      Console.WriteLine("The current culture is {0}", culture1.Name)
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        culture1.Equals(culture2))
   End Sub
End Module
' The example displays output like the following:
'     The current culture is en-US
'     The two CultureInfo objects are equal: True

È possibile ottenere un CultureInfo oggetto che rappresenta le impostazioni cultura dell'interfaccia utente correnti in uno dei due modi seguenti:You can get a CultureInfo object that represents the current UI culture in either of two ways:

Nell'esempio seguente vengono recuperati entrambi i valori di proprietà, vengono confrontati per indicare che sono uguali e viene visualizzato il nome delle impostazioni cultura dell'interfaccia utente correnti.The following example retrieves both property values, compares them to show that they are equal, and displays the name of the current UI culture.

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

public class Example
{
   public static void Main()
   {
      CultureInfo uiCulture1 = CultureInfo.CurrentUICulture;
      CultureInfo uiCulture2 = Thread.CurrentThread.CurrentUICulture;
      Console.WriteLine("The current UI culture is {0}", uiCulture1.Name);
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        uiCulture1 == uiCulture2);
   }
}
// The example displays output like the following:
//     The current UI culture is en-US
//     The two CultureInfo objects are equal: True
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim uiCulture1 As CultureInfo = CultureInfo.CurrentUICulture
      Dim uiCulture2 As CultureInfo = Thread.CurrentThread.CurrentUICulture
      Console.WriteLine("The current UI culture is {0}", uiCulture1.Name)
      Console.WriteLine("The two CultureInfo objects are equal: {0}",
                        uiCulture1.Equals(uiCulture2))
   End Sub
End Module
' The example displays output like the following:
'     The current UI culture is en-US
'     The two CultureInfo objects are equal: True

Impostazione delle impostazioni cultura correnti e correnti dell'interfaccia utenteSetting the current and current UI cultures

Per modificare le impostazioni cultura e le impostazioni cultura dell'interfaccia utente di un thread, procedere come segue:To change the culture and UI culture of a thread, do the following:

  1. Creare un'istanza CultureInfo di un oggetto che rappresenta le impostazioni cultura CultureInfo chiamando un costruttore di classe e passandogli il nome delle impostazioni cultura.Instantiate a CultureInfo object that represents that culture by calling a CultureInfo class constructor and passing it the name of the culture. Il CultureInfo(String) costruttore crea un'istanza CultureInfo di un oggetto che riflette le sostituzioni utente se le nuove impostazioni cultura sono le stesse delle impostazioni cultura correnti di Windows.The CultureInfo(String) constructor instantiates a CultureInfo object that reflects user overrides if the new culture is the same as the current Windows culture. Il CultureInfo(String, Boolean) costruttore consente di specificare se l' CultureInfo oggetto di cui è stata creata una nuova istanza riflette le sostituzioni utente se le nuove impostazioni cultura sono le stesse delle impostazioni cultura correnti di Windows.The CultureInfo(String, Boolean) constructor allows you to specify whether the newly instantiated CultureInfo object reflects user overrides if the new culture is the same as the current Windows culture.

  2. Assegnare l' CultureInfo oggetto CultureInfo.CurrentCulture alla proprietà o CultureInfo.CurrentUICulture in .NET Core e .NET Framework 4,6 e versioni successive.Assign the CultureInfo object to the CultureInfo.CurrentCulture or CultureInfo.CurrentUICulture property on .NET Core and .NET Framework 4.6 and later versions. In .NET Framework 4.5.2 e versioni precedenti, youc assegna l' CultureInfo oggetto Thread.CurrentCulture alla proprietà o Thread.CurrentUICulture .(On .NET Framework 4.5.2 and earlier versions, youc an assign the CultureInfo object to the Thread.CurrentCulture or Thread.CurrentUICulture property.)

Nell'esempio seguente vengono recuperate le impostazioni cultura correnti.The following example retrieves the current culture. Se il valore è diverso dalle impostazioni cultura francesi (Francia), le impostazioni cultura correnti vengono modificate in francese (Francia).If it is anything other than the French (France) culture, it changes the current culture to French (France). In caso contrario, le impostazioni cultura correnti vengono modificate in francese (Lussemburgo).Otherwise, it changes the current culture to French (Luxembourg).

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo current = CultureInfo.CurrentCulture;
      Console.WriteLine("The current culture is {0}", current.Name);
      CultureInfo newCulture;
      if (current.Name.Equals("fr-FR"))
         newCulture = new CultureInfo("fr-LU");
      else   
         newCulture = new CultureInfo("fr-FR");
      
      CultureInfo.CurrentCulture = newCulture;
      Console.WriteLine("The current culture is now {0}", 
                        CultureInfo.CurrentCulture.Name);   
   }
}
// The example displays output like the following:
//     The current culture is en-US
//     The current culture is now fr-FR
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim current As CultureInfo = CultureInfo.CurrentCulture
      Console.WriteLine("The current culture is {0}", current.Name)
      Dim newCulture As CultureInfo
      If current.Name.Equals("fr-FR") Then
         newCulture = New CultureInfo("fr-LU")
      Else   
         newCulture = new CultureInfo("fr-FR")
      End If
      
      CultureInfo.CurrentCulture = newCulture
      Console.WriteLine("The current culture is now {0}", 
                        CultureInfo.CurrentCulture.Name)   
   End Sub
End Module
' The example displays output like the following:
'     The current culture is en-US
'     The current culture is now fr-FR

Nell'esempio seguente vengono recuperate le impostazioni cultura correnti.The following example retrieves the current culture. Se si tratta di qualsiasi altra lingua slovena (Slovenia), le impostazioni cultura correnti vengono modificate in sloveno (Slovenia).If it is anything other the Slovenian (Slovenia) culture, it changes the current culture to Slovenian (Slovenia). In caso contrario, le impostazioni cultura correnti vengono modificate in croato (Croazia).Otherwise, it changes the current culture to Croatian (Croatia).

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo current = CultureInfo.CurrentUICulture;
      Console.WriteLine("The current UI culture is {0}", current.Name);
      CultureInfo newUICulture;
      if (current.Name.Equals("sl-SI"))
         newUICulture = new CultureInfo("hr-HR");
      else   
         newUICulture = new CultureInfo("sl-SI");
      
      CultureInfo.CurrentUICulture = newUICulture;
      Console.WriteLine("The current UI culture is now {0}", 
                        CultureInfo.CurrentUICulture.Name);   
   }
}
// The example displays output like the following:
//     The current UI culture is en-US
//     The current UI culture is now sl-SI
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim current As CultureInfo = CultureInfo.CurrentUICulture
      Console.WriteLine("The current UI culture is {0}", current.Name)
      Dim newUICulture As CultureInfo
      If current.Name.Equals("sl-SI") Then
         newUICulture = New CultureInfo("hr-HR")
      Else   
         newUICulture = new CultureInfo("sl-SI")
      End If
      
      CultureInfo.CurrentUICulture = newUICulture
      Console.WriteLine("The current UI culture is now {0}", 
                        CultureInfo.CurrentUICulture.Name)   
   End Sub
End Module
' The example displays output like the following:
'     The current UI culture is en-US
'     The current UI culture is now sl-SI

Recupero di tutte le impostazioni culturaGetting all cultures

È possibile recuperare una matrice di categorie di impostazioni cultura specifiche o di tutte le impostazioni cultura disponibili nel computer locale chiamando GetCultures il metodo.You can retrieve an array specific categories of cultures or of all the cultures available on the local computer by calling the GetCultures method. Ad esempio, è possibile recuperare impostazioni cultura personalizzate, impostazioni cultura specifiche o impostazioni cultura non associate ad alcun paese né in combinazione.For example, you can retrieve custom cultures, specific cultures, or neutral cultures either alone or in combination.

Nell'esempio seguente viene chiamato GetCultures il metodo due volte, innanzitutto System.Globalization.CultureTypes con il membro di enumerazione per recuperare tutte le impostazioni cultura personalizzate System.Globalization.CultureTypes e quindi con il membro di enumerazione per recuperare tutte le impostazioni cultura di sostituzione.The following example calls the GetCultures method twice, first with the System.Globalization.CultureTypes enumeration member to retrieve all custom cultures, and then with the System.Globalization.CultureTypes enumeration member to retrieve all replacement cultures.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      // Get all custom cultures.
      CultureInfo[] custom = CultureInfo.GetCultures(CultureTypes.UserCustomCulture);
      if (custom.Length == 0) { 
         Console.WriteLine("There are no user-defined custom cultures.");
      }
      else {
         Console.WriteLine("Custom cultures:");
         foreach (var culture in custom) 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName);    
      }
      Console.WriteLine();
      
      // Get all replacement cultures.
      CultureInfo[] replacements = CultureInfo.GetCultures(CultureTypes.ReplacementCultures);
      if (replacements.Length == 0) { 
         Console.WriteLine("There are no replacement cultures.");
      }                                             
      else {
         Console.WriteLine("Replacement cultures:");
         foreach (var culture in replacements) 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName);    
      }
      Console.WriteLine();
   }
}
// The example displays output like the following:
//     Custom cultures:
//        x-en-US-sample -- English (United States)
//        fj-FJ -- Boumaa Fijian (Viti)
//     
//     There are no replacement cultures.
Imports System.Globalization

Module Example
   Public Sub Main()
      ' Get all custom cultures.
      Dim custom() As CultureInfo = CultureInfo.GetCultures(CultureTypes.UserCustomCulture)
      If custom.Length = 0 Then 
         Console.WriteLine("There are no user-defined custom cultures.")
      Else
         Console.WriteLine("Custom cultures:")
         For Each culture In custom 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName)
         Next       
      End If
      Console.WriteLine()
      
      ' Get all replacement cultures.
      Dim replacements() As CultureInfo = CultureInfo.GetCultures(CultureTypes.ReplacementCultures)
      If replacements.Length = 0 Then 
         Console.WriteLine("There are no replacement cultures.")
      Else 
         Console.WriteLine("Replacement cultures:")
         For Each culture in replacements 
            Console.WriteLine("   {0} -- {1}", culture.Name, culture.DisplayName)    
         Next
      End If
      Console.WriteLine()
   End Sub
End Module
' The example displays output like the following:
'     Custom cultures:
'        x-en-US-sample -- English (United States)
'        fj-FJ -- Boumaa Fijian (Viti)
'     
'     There are no replacement cultures.

Impostazioni cultura e threadCulture and threads

Quando viene avviato un nuovo thread dell'applicazione, le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente vengono definite dalle impostazioni cultura correnti del sistema e non dalle impostazioni cultura del thread corrente.When a new application thread is started, its current culture and current UI culture are defined by the current system culture, and not by the current thread culture. Nell'esempio che segue viene illustrata la differenza.The following example illustrates the difference. Imposta le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente di un thread dell'applicazione sulle impostazioni cultura francesi (Francia) (fr-FR).It sets the current culture and current UI culture of an application thread to the French (France) culture (fr-FR). Se le impostazioni cultura correnti sono già fr-FR, l'esempio la imposta sulle impostazioni cultura inglesi (Stati Uniti) (en-US).If the current culture is already fr-FR, the example sets it to the English (United States) culture (en-US). Visualizza tre numeri casuali come valori di valuta e quindi crea un nuovo thread, che, a sua volta, Visualizza altri tre numeri casuali come valori di valuta.It displays three random numbers as currency values and then creates a new thread, which, in turn, displays three more random numbers as currency values. Tuttavia, come illustrato nell'output dell'esempio, i valori di valuta visualizzati dal nuovo thread non riflettono le convenzioni di formattazione delle impostazioni cultura francesi (Francia), a differenza dell'output del thread principale dell'applicazione.But as the output from the example shows, the currency values displayed by the new thread do not reflect the formatting conventions of the French (France) culture, unlike the output from the main application thread.

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

public class Example
{
   static Random rnd = new Random();
   
   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }
      else {
         // Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      ThreadProc();
          
      Thread worker = new Thread(ThreadProc);
      worker.Name = "WorkerThread";
      worker.Start();
   }
   
   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }
   
   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }
   
   private static void ThreadProc()
   {
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          8,11 €
//          1,48 €
//          8,99 €
//          9,04 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: en-US/en-US
//       Some currency values:
//          $6.72
//          $6.35
//          $2.90
//          $7.72
Imports System.Globalization
Imports System.Threading

Module Example
   Dim rnd As New Random()
   
   Public Sub Main()
      If Thread.CurrentThread.CurrentCulture.Name <> "fr-FR" Then
         ' If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Else
         ' Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US")
      End If
      ThreadProc()
          
       Dim worker As New Thread(AddressOf ThreadProc)
       worker.Name = "WorkerThread"
       worker.Start()
   End Sub
   
   Private Sub DisplayThreadInfo()
      Console.WriteLine()
      Console.WriteLine("Current Thread Name: '{0}'", 
                        Thread.CurrentThread.Name)
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name)                        
   End Sub
   
   Private Sub DisplayValues()
      ' Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:")
      For ctr As Integer = 0 To 3
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10)                        
      Next
   End Sub
   
   Private Sub ThreadProc()
      DisplayThreadInfo()
      DisplayValues()
   End Sub
End Module
' The example displays output similar to the following:
'       Current Thread Name: ''
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          8,11 €
'          1,48 €
'          8,99 €
'          9,04 €
'       
'       Current Thread Name: 'WorkerThread'
'       Current Thread Culture/UI Culture: en-US/en-US
'       Some currency values:
'          $6.72
'          $6.35
'          $2.90
'          $7.72

Nelle versioni del .NET Framework prima .NET Framework 4.5.NET Framework 4.5di, il modo più comune per garantire che il thread dell'applicazione principale condivida le stesse impostazioni cultura con tutti gli altri thread di lavoro è passare il nome delle impostazioni cultura a livello di applicazione o un CultureInfo oggetto che rappresenta le impostazioni cultura a livello di applicazione System.Threading.ParameterizedThreadStart a un delegato.In versions of the .NET Framework before the .NET Framework 4.5.NET Framework 4.5, the most common way to ensure that the main application thread shares the same culture with all other worker threads is to pass either the name of the application-wide culture or a CultureInfo object that represents the application-wide culture to a System.Threading.ParameterizedThreadStart delegate. Nell'esempio seguente viene usato questo approccio per assicurarsi che i valori di valuta visualizzati da due thread riflettano le convenzioni di formattazione delle stesse impostazioni cultura.The following example uses this approach to ensure that the currency values displayed by two threads reflect the formatting conventions of the same culture.

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

public class Example
{
   static Random rnd = new Random();
   
   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }   
      else {
         // Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      DisplayThreadInfo();
      DisplayValues();
          
       Thread worker = new Thread(Example.ThreadProc);
       worker.Name = "WorkerThread";
       worker.Start(Thread.CurrentThread.CurrentCulture);
   }
   
   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }
   
   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }
   
   private static void ThreadProc(Object obj) 
   {
      Thread.CurrentThread.CurrentCulture = (CultureInfo) obj;
      Thread.CurrentThread.CurrentUICulture = (CultureInfo) obj;
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          6,83 €
//          3,47 €
//          6,07 €
//          1,70 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          9,54 €
//          9,50 €
//          0,58 €
//          6,91 €
Imports System.Globalization
Imports System.Threading

Module Example
   Dim rnd As New Random()
   
   Public Sub Main()
      If Thread.CurrentThread.CurrentCulture.Name <> "fr-FR" Then
         ' If current culture is not fr-FR, set culture to fr-FR.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Else
         ' Set culture to en-US.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
         Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US")
      End If
      DisplayThreadInfo()
      DisplayValues()
          
       Dim worker As New Thread(AddressOf ThreadProc)
       worker.Name = "WorkerThread"
       worker.Start(Thread.CurrentThread.CurrentCulture)
   End Sub
   
   Private Sub DisplayThreadInfo()
      Console.WriteLine()
      Console.WriteLine("Current Thread Name: '{0}'", 
                        Thread.CurrentThread.Name)
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name)                        
   End Sub
   
   Private Sub DisplayValues()
      ' Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:")
      For ctr As Integer = 0 To 3
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10)                        
      Next
   End Sub
   
   Private Sub ThreadProc(obj As Object)
      Thread.CurrentThread.CurrentCulture = CType(obj, CultureInfo)
      Thread.CurrentThread.CurrentUICulture = CType(obj, CultureInfo)
      DisplayThreadInfo()
      DisplayValues()
   End Sub
End Module
' The example displays output similar to the following:
'       Current Thread Name: ''
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          6,83 €
'          3,47 €
'          6,07 €
'          1,70 €
'       
'       Current Thread Name: 'WorkerThread'
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          9,54 €
'          9,50 €
'          0,58 €
'          6,91 €

È possibile impostare le impostazioni cultura e le impostazioni cultura dell'interfaccia utente dei thread del pool di thread ThreadPool.QueueUserWorkItem(WaitCallback, Object) in modo analogo chiamando il metodo.You can set the culture and UI culture of thread pool threads in a similar manner by calling the ThreadPool.QueueUserWorkItem(WaitCallback, Object) method.

A partire da CultureInfo DefaultThreadCurrentCulture DefaultThreadCurrentUICulture , è possibile impostare le impostazioni cultura e le impostazioni cultura dell'interfaccia utente di tutti i thread in un dominio applicazione in modo più diretto, assegnando un oggetto che rappresenta le impostazioni cultura alle proprietà e. .NET Framework 4.5.NET Framework 4.5Starting with the .NET Framework 4.5.NET Framework 4.5, you can set the culture and UI culture of all threads in an application domain more directly by assigning a CultureInfo object that represents that culture to the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties. Nell'esempio seguente vengono utilizzate queste proprietà per garantire che tutti i thread nel dominio applicazione predefinito condividano le stesse impostazioni cultura.The following example uses these properties to ensure that all threads in the default application domain share the same culture.

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

public class Example
{
   static Random rnd = new Random();
   
   public static void Main()
   {
      if (Thread.CurrentThread.CurrentCulture.Name != "fr-FR") {
         // If current culture is not fr-FR, set culture to fr-FR.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      }   
      else {
         // Set culture to en-US.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
      }
      ThreadProc();
          
      Thread worker = new Thread(Example.ThreadProc);
      worker.Name = "WorkerThread";
      worker.Start();
   }
   
   private static void DisplayThreadInfo()
   {
      Console.WriteLine("\nCurrent Thread Name: '{0}'", 
                        Thread.CurrentThread.Name);
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name);                        
   }
   
   private static void DisplayValues()
   {
      // Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:");
      for (int ctr = 0; ctr <= 3; ctr++)
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10);                        
   }
   
   private static void ThreadProc() 
   {
      DisplayThreadInfo();
      DisplayValues();
   }
}
// The example displays output similar to the following:
//       Current Thread Name: ''
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          6,83 €
//          3,47 €
//          6,07 €
//          1,70 €
//       
//       Current Thread Name: 'WorkerThread'
//       Current Thread Culture/UI Culture: fr-FR/fr-FR
//       Some currency values:
//          9,54 €
//          9,50 €
//          0,58 €
//          6,91 €
Imports System.Globalization
Imports System.Threading

Module Example
   Dim rnd As New Random()
   
   Public Sub Main()
      If Thread.CurrentThread.CurrentCulture.Name <> "fr-FR" Then
         ' If current culture is not fr-FR, set culture to fr-FR.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR")
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Else
         ' Set culture to en-US.
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("en-US")
      End If
      ThreadProc()

       Dim worker As New Thread(AddressOf ThreadProc)
       worker.Name = "WorkerThread"
       worker.Start()
   End Sub
   
   Private Sub DisplayThreadInfo()
      Console.WriteLine()
      Console.WriteLine("Current Thread Name: '{0}'", 
                        Thread.CurrentThread.Name)
      Console.WriteLine("Current Thread Culture/UI Culture: {0}/{1}", 
                        Thread.CurrentThread.CurrentCulture.Name,
                        Thread.CurrentThread.CurrentUICulture.Name)                        
   End Sub
   
   Private Sub DisplayValues()
      ' Create new thread and display three random numbers.
      Console.WriteLine("Some currency values:")
      For ctr As Integer = 0 To 3
         Console.WriteLine("   {0:C2}", rnd.NextDouble() * 10)                        
      Next
   End Sub
   
   Private Sub ThreadProc()
      DisplayThreadInfo()
      DisplayValues()
   End Sub
End Module
' The example displays output similar to the following:
'       Current Thread Name: ''
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          6,83 €
'          3,47 €
'          6,07 €
'          1,70 €
'       
'       Current Thread Name: 'WorkerThread'
'       Current Thread Culture/UI Culture: fr-FR/fr-FR
'       Some currency values:
'          9,54 €
'          9,50 €
'          0,58 €
'          6,91 €

Avviso

Sebbene le DefaultThreadCurrentCulture proprietà DefaultThreadCurrentUICulture e siano membri statici, definiscono le impostazioni cultura predefinite e le impostazioni cultura dell'interfaccia utente predefinite solo per il dominio dell'applicazione corrente al momento dell'impostazione di questi valori di proprietà.Although the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties are static members, they define the default culture and default UI culture only for the application domain that is current at the time these property values are set. Per ulteriori informazioni, vedere la sezione successiva, impostazioni cultura e domini applicazione.For more information, see the next section, Culture and application domains.

Quando si assegnano valori alle DefaultThreadCurrentCulture proprietà DefaultThreadCurrentUICulture e, le impostazioni cultura e le impostazioni cultura dell'interfaccia utente dei thread nel dominio dell'applicazione cambiano anche se non sono state assegnate in modo esplicito le impostazioni cultura.When you assign values to the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties, the culture and UI culture of the threads in the application domain also change if they have not explicitly been assigned a culture. Tuttavia, questi thread riflettono le nuove impostazioni cultura solo durante l'esecuzione nel dominio applicazione corrente.However, these threads reflect the new culture settings only while they execute in the current application domain. Se questi thread vengono eseguiti in un altro dominio applicazione, le relative impostazioni cultura diventeranno le impostazioni cultura predefinite definite per il dominio dell'applicazione.If these threads execute in another application domain, their culture becomes the default culture defined for that application domain. Di conseguenza, è consigliabile impostare sempre le impostazioni cultura del thread principale dell'applicazione e non basarsi sulle DefaultThreadCurrentCulture proprietà e DefaultThreadCurrentUICulture per modificarlo.As a result, we recommend that you always set the culture of the main application thread, and not rely on the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to change it.

Impostazioni cultura e domini applicazioneCulture and application domains

DefaultThreadCurrentCulturee DefaultThreadCurrentUICulture sono proprietà statiche che definiscono in modo esplicito le impostazioni cultura predefinite solo per il dominio dell'applicazione corrente quando viene impostato o recuperato il valore della proprietà.DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture are static properties that explicitly define a default culture only for the application domain that is current when the property value is set or retrieved. Nell'esempio seguente vengono impostate le impostazioni cultura predefinite e le impostazioni cultura dell'interfaccia utente predefinite nel dominio applicazione predefinito in francese (Francia) AppDomainSetup , quindi vengono AppDomainInitializer utilizzate la classe e il delegato per impostare le impostazioni cultura predefinite e le impostazioni cultura dell'interfaccia utente in un nuovo dominio applicazione su Russo (Russia).The following example sets the default culture and default UI culture in the default application domain to French (France), and then uses the AppDomainSetup class and the AppDomainInitializer delegate to set the default culture and UI culture in a new application domain to Russian (Russia). Un singolo thread esegue quindi due metodi in ogni dominio applicazione.A single thread then executes two methods in each application domain. Si noti che le impostazioni cultura del thread e le impostazioni cultura dell'interfaccia utente non sono impostate in modo esplicito; sono derivate dalle impostazioni cultura predefinite e dalle impostazioni cultura dell'interfaccia utente del dominio dell'applicazione in cui è in esecuzione il thread.Note that the thread's culture and UI culture are not explicitly set; they are derived from the default culture and UI culture of the application domain in which the thread is executing. Si noti inoltre che DefaultThreadCurrentCulture le DefaultThreadCurrentUICulture proprietà e restituiscono CultureInfo i valori predefiniti del dominio dell'applicazione corrente quando viene effettuata la chiamata al metodo.Note also that the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties return the default CultureInfo values of the application domain that is current when the method call is made.

using System;
using System.Globalization;
using System.Reflection;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // Set the default culture and display the current date in the current application domain.
      Info info1 = new Info();
      SetAppDomainCultures("fr-FR");
      
      // Create a second application domain.
      AppDomainSetup setup = new AppDomainSetup();
      setup.AppDomainInitializer = SetAppDomainCultures;
      setup.AppDomainInitializerArguments = new string[] { "ru-RU" };
      AppDomain domain = AppDomain.CreateDomain("Domain2", null, setup);
      // Create an Info object in the new application domain.
      Info info2 = (Info) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName, 
                                                         "Info"); 

      // Execute methods in the two application domains.
      info2.DisplayDate();
      info2.DisplayCultures();
      
      info1.DisplayDate();
      info1.DisplayCultures();            
   }

   public static void SetAppDomainCultures(string[] names)
   {
      SetAppDomainCultures(names[0]);
   }
   
   public static void SetAppDomainCultures(string name)
   {
       try {
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture(name);
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture(name);
      }
      // If an exception occurs, we'll just fall back to the system default.
      catch (CultureNotFoundException) {
         return;
      }   
      catch (ArgumentException) {
         return;
      } 
   }
}

public class Info : MarshalByRefObject
{
   public void DisplayDate()
   {
      Console.WriteLine("Today is {0:D}", DateTime.Now);
   }
   
   public void DisplayCultures()
   {
      Console.WriteLine("Application domain is {0}", AppDomain.CurrentDomain.Id);
      Console.WriteLine("Default Culture: {0}", CultureInfo.DefaultThreadCurrentCulture);
      Console.WriteLine("Default UI Culture: {0}", CultureInfo.DefaultThreadCurrentUICulture);
   }
}
// The example displays the following output:
//       Today is 14 октября 2011 г.
//       Application domain is 2
//       Default Culture: ru-RU
//       Default UI Culture: ru-RU
//       Today is vendredi 14 octobre 2011
//       Application domain is 1
//       Default Culture: fr-FR
//       Default UI Culture: fr-FR
Imports System.Globalization
Imports System.Reflection
Imports System.Threading

Module Example
   Public Sub Main()
      ' Set the default culture and display the current date in the current application domain.
      Dim info1 As New Info()
      SetAppDomainCultures("fr-FR")
      
      ' Create a second application domain.
      Dim setup As New AppDomainSetup()
      setup.AppDomainInitializer = AddressOf SetAppDomainCultures
      setup.AppDomainInitializerArguments = { "ru-RU" }
      Dim domain As AppDomain = AppDomain.CreateDomain("Domain2", Nothing, setup)
      ' Create an Info object in the new application domain.
      Dim info2 As Info = CType(domain.CreateInstanceAndUnwrap(GetType(Example).Assembly.FullName, 
                                                               "Info"), Info) 

      ' Execute methods in the two application domains.
      info2.DisplayDate()
      info2.DisplayCultures()
      
      info1.DisplayDate()
      info1.DisplayCultures()            
   End Sub
   
   Public Sub SetAppDomainCultures(names() As String)
      SetAppDomainCultures(names(0))
   End Sub
   
   Public Sub SetAppDomainCultures(name As String)
       Try
         CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture(name)
         CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture(name)
      ' If an exception occurs, we'll just fall back to the system default.
      Catch e As CultureNotFoundException
         Return
      Catch e As ArgumentException
         Return
      End Try      
   End Sub
End Module

Public Class Info : Inherits MarshalByRefObject
   Public Sub DisplayDate()
      Console.WriteLine("Today is {0:D}", Date.Now)
   End Sub
   
   Public Sub DisplayCultures()
      Console.WriteLine("Application domain is {0}", AppDomain.CurrentDomain.Id)
      Console.WriteLine("Default Culture: {0}", CultureInfo.DefaultThreadCurrentCulture)
      Console.WriteLine("Default UI Culture: {0}", CultureInfo.DefaultThreadCurrentUICulture)
   End Sub
End Class
' The example displays the following output:
'       Today is 14 октября 2011 г.
'       Application domain is 2
'       Default Culture: ru-RU
'       Default UI Culture: ru-RU
'       Today is vendredi 14 octobre 2011
'       Application domain is 1
'       Default Culture: fr-FR
'       Default UI Culture: fr-FR

Per ulteriori informazioni sulle impostazioni cultura e sui domini applicazione, vedere la sezione "domini applicazione e thread" nell'argomento domini applicazione .For more information about cultures and application domains, see the "Application Domains and Threads" section in the Application Domains topic.

Impostazioni cultura e operazioni asincrone basate su attivitàCulture and task-based asynchronous operations

Il modello di programmazione asincrona basato su attività Task USA Task<TResult> gli oggetti e per eseguire in modo asincrono i delegati nei thread del pool di thread.The task-based asynchronous programming pattern uses Task and Task<TResult> objects to asynchronously execute delegates on thread pool threads. Il thread specifico in cui viene eseguita un'attività specifica non è noto in anticipo, ma è determinato solo in fase di esecuzione.The specific thread on which a particular task runs is not known in advance, but is determined only at runtime.

Per le app destinate .NET Framework 4.6.NET Framework 4.6 a o versioni successive, le impostazioni cultura fanno parte del contesto di un'operazione asincrona.For apps that target the .NET Framework 4.6.NET Framework 4.6 or later versions, culture is part of an asynchronous operation's context. In altre parole, a partire dalle app destinate .NET Framework 4.6.NET Framework 4.6a, le operazioni asincrone ereditano per impostazione predefinita CurrentCulture i CurrentUICulture valori delle proprietà e del thread da cui vengono avviate.In other words, starting with apps that target the .NET Framework 4.6.NET Framework 4.6, asynchronous operations by default inherit the values of the CurrentCulture and CurrentUICulture properties of the thread from which they are launched. Se le impostazioni cultura correnti o le impostazioni cultura correnti dell'interfaccia utente sono diverse dalle impostazioni cultura del sistema, le impostazioni cultura correnti attraversano i limiti dei thread e diventano le impostazioni cultura correnti del thread del pool di thread che esegue un'operazione asincrona.If the current culture or current UI culture differs from the system culture, the current culture crosses thread boundaries and becomes the current culture of the thread pool thread that is executing an asynchronous operation.

Nell'esempio seguente viene illustrato questo concetto.The following example provides a simple illustration. Usa l' TargetFrameworkAttribute attributo per fare .NET Framework 4.6.NET Framework 4.6riferimento a.It uses the TargetFrameworkAttribute attribute to target the .NET Framework 4.6.NET Framework 4.6. Nell'esempio viene definito Func<TResult> un delegato formatDelegate,, che restituisce alcuni numeri formattati come valori di valuta.The example defines a Func<TResult> delegate, formatDelegate, that returns some numbers formatted as currency values. Nell'esempio le impostazioni cultura correnti del sistema vengono modificate in francese (Francia) o, se francese (Francia) corrisponde già alle impostazioni cultura correnti, in inglese (Stati Uniti).The example changes the current system culture to either French (France) or, if French (France) is already the current culture, English (United States). Quindi:It then:

  • Richiama direttamente il delegato in modo che venga eseguito in modo sincrono sul thread principale dell'app.Invokes the delegate directly so that it runs synchronously on the main app thread.

  • Crea un'attività che esegue il delegato in modo asincrono in un thread del pool di thread.Creates a task that executes the delegate asynchronously on a thread pool thread.

  • Crea un'attività che esegue in modo sincrono il delegato sul thread principale dell'app chiamando il Task.RunSynchronously metodo.Creates a task that executes the delegate synchronously on the main app thread by calling the Task.RunSynchronously method.

Come illustrato nell'output dell'esempio, quando le impostazioni cultura correnti vengono modificate in francese (Francia), le impostazioni cultura correnti del thread da cui le attività vengono richiamate in modo asincrono diventano le impostazioni cultura correnti per l'operazione asincrona.As the output from the example shows, when the current culture is changed to French (France), the current culture of the thread from which tasks are invoked asynchronously becomes the current culture for that asynchronous operation.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

[assembly:TargetFramework(".NETFramework,Version=v4.6")]

public class Example
{
   
   public static void Main()
   {
       decimal[] values = { 163025412.32m, 18905365.59m };
       string formatString = "C2";
       Func<String> formatDelegate = () => { string output = String.Format("Formatting using the {0} culture on thread {1}.\n",
                                                                           CultureInfo.CurrentCulture.Name,
                                                                           Thread.CurrentThread.ManagedThreadId);
                                             foreach (var value in values)
                                                output += String.Format("{0}   ", value.ToString(formatString));
                                                   
                                             output += Environment.NewLine;
                                             return output;
                                           };
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       
       // Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:");
       Console.WriteLine(formatDelegate());
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:"); 
       var t1 = Task.Run(formatDelegate);
       Console.WriteLine(t1.Result);
       
       Console.WriteLine("Executing a task synchronously:");
       var t2 = new Task<String>(formatDelegate); 
       t2.RunSynchronously();
       Console.WriteLine(t2.Result);
   }
}
// The example displays the following output:
//         The example is running on thread 1
//         The current culture is en-US
//         Changed the current culture to fr-FR.
//
//         Executing the delegate synchronously:
//         Formatting using the fr-FR culture on thread 1.
//         163 025 412,32 €   18 905 365,59 €
//
//         Executing a task asynchronously:
//         Formatting using the fr-FR culture on thread 3.
//         163 025 412,32 €   18 905 365,59 €
//
//         Executing a task synchronously:
//         Formatting using the fr-FR culture on thread 1.
//         163 025 412,32 €   18 905 365,59 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

<Assembly:TargetFramework(".NETFramework,Version=v4.6")>

Module Example
   Public Sub Main()
       Dim values() As Decimal = { 163025412.32d, 18905365.59d }
       Dim formatString As String = "C2"
       Dim formatDelegate As Func(Of String) = Function()
                                                  Dim output As String = String.Format("Formatting using the {0} culture on thread {1}.",
                                                                                       CultureInfo.CurrentCulture.Name,
                                                                                       Thread.CurrentThread.ManagedThreadId)
                                                  output += Environment.NewLine
                                                  For Each value In values
                                                     output += String.Format("{0}   ", value.ToString(formatString))
                                                  Next 
                                                  output += Environment.NewLine
                                                  Return output
                                               End Function
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If
       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       Console.WriteLine()                  
       
       ' Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:")
       Console.WriteLine(formatDelegate())
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:") 
       Dim t1 = Task.Run(formatDelegate)
       Console.WriteLine(t1.Result)
       
       Console.WriteLine("Executing a task synchronously:")
       Dim t2 = New Task(Of String)(formatDelegate) 
       t2.RunSynchronously()
       Console.WriteLine(t2.Result)
   End Sub
End Module
' The example displays the following output:
'          The example is running on thread 1
'          The current culture is en-US
'          Changed the current culture to fr-FR.
'
'          Executing the delegate synchronously:
'          Formatting Imports the fr-FR culture on thread 1.
'          163 025 412,32 €   18 905 365,59 €
'
'          Executing a task asynchronously:
'          Formatting Imports the fr-FR culture on thread 3.
'          163 025 412,32 €   18 905 365,59 €
'
'          Executing a task synchronously:
'          Formatting Imports the fr-FR culture on thread 1.
'          163 025 412,32 €   18 905 365,59 €

Per le app destinate alle versioni del .NET Framework precedenti a .NET Framework 4.6.NET Framework 4.6o per le app che non sono destinate a una versione specifica del .NET Framework, le impostazioni cultura del thread chiamante non fanno parte del contesto di un'attività.For apps that target versions of the .NET Framework prior to the .NET Framework 4.6.NET Framework 4.6, or for apps that do not target a particular version of the .NET Framework, the culture of the calling thread is not part of a task's context. A meno che non sia definito in modo esplicito, per impostazione predefinita le impostazioni cultura dei nuovi thread sono le impostazioni cultura del sistema.Instead, unless one is explicitly defined, the culture of new threads by default is the system culture. Nell'esempio seguente, che è identico all'esempio precedente, ad eccezione del fatto che TargetFrameworkAttribute manca l'attributo, viene illustrato questo.The following example, which is identical to the previous example except that it lacks the TargetFrameworkAttribute attribute, illustrates this. Poiché le impostazioni cultura del sistema in cui è stato eseguito l'esempio sono in inglese (Stati Uniti), le impostazioni cultura dell'attività eseguite in modo asincrono in un thread del pool di thread sono en-US anziché fr-FR.Because the system culture of the system on which the example executed was English (United States), the culture of the task that executes asynchronously on a thread pool thread is en-US rather than fr-FR.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
       decimal[] values = { 163025412.32m, 18905365.59m };
       string formatString = "C2";
       Func<String> formatDelegate = () => { string output = String.Format("Formatting using the {0} culture on thread {1}.\n",
                                                                           CultureInfo.CurrentCulture.Name,
                                                                           Thread.CurrentThread.ManagedThreadId);
                                             foreach (var value in values)
                                                output += String.Format("{0}   ", value.ToString(formatString));
                                                   
                                             output += Environment.NewLine;
                                             return output;
                                           };
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       
       // Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:");
       Console.WriteLine(formatDelegate());
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:"); 
       var t1 = Task.Run(formatDelegate);
       Console.WriteLine(t1.Result);
       
       Console.WriteLine("Executing a task synchronously:");
       var t2 = new Task<String>(formatDelegate); 
       t2.RunSynchronously();
       Console.WriteLine(t2.Result);
   }
}
// The example displays the following output:
//     The example is running on thread 1
//     The current culture is en-US
//     Changed the current culture to fr-FR.
//     
//     Executing the delegate synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
//     
//     Executing a task asynchronously:
//     Formatting using the en-US culture on thread 3.
//     $163,025,412.32   $18,905,365.59
//     
//     Executing a task synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
       Dim values() As Decimal = { 163025412.32d, 18905365.59d }
       Dim formatString As String = "C2"
       Dim formatDelegate As Func(Of String) = Function()
                                                  Dim output As String = String.Format("Formatting using the {0} culture on thread {1}.",
                                                                                       CultureInfo.CurrentCulture.Name,
                                                                                       Thread.CurrentThread.ManagedThreadId)
                                                  output += Environment.NewLine
                                                  For Each value In values
                                                     output += String.Format("{0}   ", value.ToString(formatString))
                                                  Next 
                                                  output += Environment.NewLine
                                                  Return output
                                               End Function
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If
       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       Console.WriteLine()                  
       
       ' Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:")
       Console.WriteLine(formatDelegate())
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:") 
       Dim t1 = Task.Run(formatDelegate)
       Console.WriteLine(t1.Result)
       
       Console.WriteLine("Executing a task synchronously:")
       Dim t2 = New Task(Of String)(formatDelegate) 
       t2.RunSynchronously()
       Console.WriteLine(t2.Result)
   End Sub
End Module
' The example displays the following output:
'     The example is running on thread 1
'     The current culture is en-US
'     Changed the current culture to fr-FR.
'     
'     Executing the delegate synchronously:
'     Formatting using the fr-FR culture on thread 1.
'     163 025 412,32 €   18 905 365,59 €
'     
'     Executing a task asynchronously:
'     Formatting using the en-US culture on thread 3.
'     $163,025,412.32   $18,905,365.59
'     
'     Executing a task synchronously:
'     Formatting using the fr-FR culture on thread 1.
'     163 025 412,32 €   18 905 365,59 €

Per le app destinate alle versioni del .NET Framework da .NET Framework 4.5.NET Framework 4.5 e versioni successive .NET Framework 4.6.NET Framework 4.6, ma prima di, è possibile usare DefaultThreadCurrentCulture le DefaultThreadCurrentUICulture proprietà e per assicurarsi che le impostazioni cultura del thread chiamante vengano usate nelle attività asincrone che eseguire nei thread del pool di thread.For apps that target versions of the .NET Framework from the .NET Framework 4.5.NET Framework 4.5 and later but prior to the .NET Framework 4.6.NET Framework 4.6, you can use the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to ensure that the culture of the calling thread is used in asynchronous tasks that execute on thread pool threads. L'esempio seguente è identico all'esempio precedente, ad eccezione del fatto che DefaultThreadCurrentCulture usa la proprietà per assicurarsi che i thread del pool di thread abbiano le stesse impostazioni cultura del thread dell'applicazione principale.The following example is identical to the previous example, except that it uses the DefaultThreadCurrentCulture property to ensure that thread pool threads have the same culture as the main app thread.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
       decimal[] values = { 163025412.32m, 18905365.59m };
       string formatString = "C2";
       Func<String> formatDelegate = () => { string output = String.Format("Formatting using the {0} culture on thread {1}.\n",
                                                                           CultureInfo.CurrentCulture.Name,
                                                                           Thread.CurrentThread.ManagedThreadId);
                                             foreach (var value in values)
                                                output += String.Format("{0}   ", value.ToString(formatString));
                                                   
                                             output += Environment.NewLine;
                                             return output;
                                           };
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture;
       
       // Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:");
       Console.WriteLine(formatDelegate());
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:"); 
       var t1 = Task.Run(formatDelegate);
       Console.WriteLine(t1.Result);
       
       Console.WriteLine("Executing a task synchronously:");
       var t2 = new Task<String>(formatDelegate); 
       t2.RunSynchronously();
       Console.WriteLine(t2.Result);
   }
}
// The example displays the following output:
//     The example is running on thread 1
//     The current culture is en-US
//     Changed the current culture to fr-FR.
//     
//     Executing the delegate synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
//     
//     Executing a task asynchronously:
//     Formatting using the fr-FR culture on thread 3.
//     163 025 412,32 €   18 905 365,59 €
//     
//     Executing a task synchronously:
//     Formatting using the fr-FR culture on thread 1.
//     163 025 412,32 €   18 905 365,59 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
       Dim values() As Decimal = { 163025412.32d, 18905365.59d }
       Dim formatString As String = "C2"
       Dim formatDelegate As Func(Of String) = Function()
                                                  Dim output As String = String.Format("Formatting using the {0} culture on thread {1}.",
                                                                                       CultureInfo.CurrentCulture.Name,
                                                                                       Thread.CurrentThread.ManagedThreadId)
                                                  output += Environment.NewLine
                                                  For Each value In values
                                                     output += String.Format("{0}   ", value.ToString(formatString))
                                                  Next 
                                                  output += Environment.NewLine
                                                  Return output
                                               End Function
       
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If
       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture
       Console.WriteLine()                  
       
       ' Execute the delegate synchronously.
       Console.WriteLine("Executing the delegate synchronously:")
       Console.WriteLine(formatDelegate())
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously:") 
       Dim t1 = Task.Run(formatDelegate)
       Console.WriteLine(t1.Result)
       
       Console.WriteLine("Executing a task synchronously:")
       Dim t2 = New Task(Of String)(formatDelegate) 
       t2.RunSynchronously()
       Console.WriteLine(t2.Result)
   End Sub
End Module
' The example displays the following output:
'       The example is running on thread 1
'       The current culture is en-US
'       Changed the current culture to fr-FR.
'       
'       Executing the delegate synchronously:
'       Formatting using the fr-FR culture on thread 1.
'       163 025 412,32 €   18 905 365,59 €
'       
'       Executing a task asynchronously:
'       Formatting using the fr-FR culture on thread 3.
'       163 025 412,32 €   18 905 365,59 €
'       
'       Executing a task synchronously:
'       Formatting using the fr-FR culture on thread 1.
'       163 025 412,32 €   18 905 365,59 €

DefaultThreadCurrentCulturee DefaultThreadCurrentUICulture sono proprietà del dominio per app, ovvero stabiliscono impostazioni cultura predefinite per tutti i thread a cui non vengono assegnate in modo esplicito le impostazioni cultura in un dominio applicazione specifico.DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture are per-app domain properties; that is, they establish a default culture for all threads not explicitly assigned a culture in a specific application domain. Per le .NET Framework 4.6.NET Framework 4.6 app destinate a o versioni successive, tuttavia, le impostazioni cultura del thread chiamante rimangono parte del contesto di un'attività asincrona anche se l'attività supera i limiti del dominio dell'applicazione.However, for apps that target the .NET Framework 4.6.NET Framework 4.6 or later, the culture of the calling thread remains part of an asynchronous task's context even if the task crosses app domain boundaries.

Nell'esempio seguente viene illustrato che le impostazioni cultura del thread chiamante rimangono le impostazioni cultura correnti di un'operazione asincrona basata su attività anche se il metodo che l'attività esegue supera i limiti del dominio applicazione.The following example shows that the calling thread's culture remains the current culture of a task-based asynchronous operation even if the method that the task is executing crosses application domain boundaries. Definisce una classe, DataRetriever, con un singolo metodo, GetFormattedNumber, che restituisce un numero a virgola mobile a precisione doppia casuale compreso tra 1 e 1.000 formattato come valore di valuta.It defines a class, DataRetriever, with a single method, GetFormattedNumber, that returns a random double-precision floating-point number between 1 and 1,000 formatted as a currency value. Viene eseguita una prima attività che crea semplicemente un'istanza DataRetriever di un'istanza e GetFormattedNumber ne chiama il metodo.A first task is run that simply instantiates a DataRetriever instance and calls its GetFormattedNumber method. Una seconda attività segnala il dominio applicazione corrente, crea un nuovo dominio applicazione, DataRetriever crea un'istanza di nel nuovo dominio applicazione e ne chiama il GetFormattedNumber metodo.A second task reports its current application domain, creates a new application domain, instantiates a DataRetriever instance in the new application domain, and calls its GetFormattedNumber method. Come illustrato nell'output dell'esempio, le impostazioni cultura correnti sono rimaste invariate nel thread chiamante, la prima attività e la seconda durante l'esecuzione nel dominio dell'applicazione principale e nel secondo dominio dell'applicazione.As the output from the example shows, the current culture has remained the same in the calling thread, the first task, and the second task both when it was executing in the main application domain and the second application domain.

using System;
using System.Globalization;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;

[assembly:TargetFramework(".NETFramework,Version=v4.6")]

public class Example
{
   public static void Main()
   {
       string formatString = "C2";
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId);
       // Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name);
       if (CultureInfo.CurrentCulture.Name == "fr-FR")
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
       else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

       Console.WriteLine("Changed the current culture to {0}.\n",
                         CultureInfo.CurrentCulture.Name);
       
       // Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously in the main appdomain:"); 
       var t1 = Task.Run(() => { DataRetriever d = new DataRetriever();
                                 return d.GetFormattedNumber(formatString);
                               });
       Console.WriteLine(t1.Result);
       Console.WriteLine(); 
       
       Console.WriteLine("Executing a task synchronously in two appdomains:");
       var t2 = Task.Run(() => { Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                                                   Thread.CurrentThread.ManagedThreadId, 
                                                   AppDomain.CurrentDomain.FriendlyName);
                                 AppDomain domain = AppDomain.CreateDomain("Domain2");
                                 DataRetriever d = (DataRetriever) domain.CreateInstanceAndUnwrap(typeof(Example).Assembly.FullName,
                                                   "DataRetriever");
                                 return d.GetFormattedNumber(formatString); 
                               }); 
       Console.WriteLine(t2.Result);
   }
}

public class DataRetriever : MarshalByRefObject
{
   public string GetFormattedNumber(String format)
   {
      Thread thread = Thread.CurrentThread;
      Console.WriteLine("Current culture is {0}", thread.CurrentCulture);
      Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                        thread.ManagedThreadId, 
                        AppDomain.CurrentDomain.FriendlyName);
      Random rnd = new Random();
      Double value = rnd.NextDouble() * 1000;
      return value.ToString(format);
   }
}
// The example displays output like the following:
//     The example is running on thread 1
//     The current culture is en-US
//     Changed the current culture to fr-FR.
//     
//     Executing a task asynchronously in a single appdomain:
//     Current culture is fr-FR
//     Thread 3 is running in app domain 'AsyncCulture4.exe'
//     93,48 €
//     
//     Executing a task synchronously in two appdomains:
//     Thread 4 is running in app domain 'AsyncCulture4.exe'
//     Current culture is fr-FR
//     Thread 4 is running in app domain 'Domain2'
//     288,66 €
Imports System.Globalization
Imports System.Runtime.Versioning
Imports System.Threading
Imports System.Threading.Tasks

<Assembly:TargetFramework(".NETFramework,Version=v4.6")>

Module Example
   Public Sub Main()
       Dim formatString As String = "C2"
       Console.WriteLine("The example is running on thread {0}", 
                         Thread.CurrentThread.ManagedThreadId)
       ' Make the current culture different from the system culture.
       Console.WriteLine("The current culture is {0}", 
                         CultureInfo.CurrentCulture.Name)
       If CultureInfo.CurrentCulture.Name = "fr-FR" Then
          Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
       Else
          Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
       End If

       Console.WriteLine("Changed the current culture to {0}.",
                         CultureInfo.CurrentCulture.Name)
       Console.WriteLine()
       
       ' Call an async delegate to format the values using one format string.
       Console.WriteLine("Executing a task asynchronously in the main appdomain:") 
       Dim t1 = Task.Run(Function()
                            Dim d As New DataRetriever()
                            Return d.GetFormattedNumber(formatString)
                         End Function)
       Console.WriteLine(t1.Result)
       Console.WriteLine() 
       
       Console.WriteLine("Executing a task synchronously in two appdomains:")
       Dim t2 = Task.Run(Function()
                            Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                                              Thread.CurrentThread.ManagedThreadId, 
                                              AppDomain.CurrentDomain.FriendlyName)
                            Dim domain As AppDomain = AppDomain.CreateDomain("Domain2")
                            Dim d As DataRetriever = CType(domain.CreateInstanceAndUnwrap(GetType(Example).Assembly.FullName,
                                                                                          "DataRetriever"), DataRetriever)
                            Return d.GetFormattedNumber(formatString) 
                         End Function) 
       Console.WriteLine(t2.Result)
   End Sub
End Module

Public Class DataRetriever : Inherits MarshalByRefObject
   Public Function GetFormattedNumber(format As String) As String
      Dim thread As Thread = Thread.CurrentThread
      Console.WriteLine("Current culture is {0}", thread.CurrentCulture)
      Console.WriteLine("Thread {0} is running in app domain '{1}'", 
                        thread.ManagedThreadId, 
                        AppDomain.CurrentDomain.FriendlyName)
      Dim rnd As New Random()
      Dim value As Double = rnd.NextDouble() * 1000
      Return value.ToString(format)
   End Function
End Class
' The example displays output like the following:
'     The example is running on thread 1
'     The current culture is en-US
'     Changed the current culture to fr-FR.
'     
'     Executing a task asynchronously in a single appdomain:
'     Current culture is fr-FR
'     Thread 3 is running in app domain 'AsyncCulture4.exe'
'     93,48 €
'     
'     Executing a task synchronously in two appdomains:
'     Thread 4 is running in app domain 'AsyncCulture4.exe'
'     Current culture is fr-FR
'     Thread 4 is running in app domain 'Domain2'
'     288,66 €

Serializzazione dell'oggetto CultureInfoCultureInfo object serialization

Quando un CultureInfo oggetto viene serializzato, tutto ciò che viene effettivamente archiviato Name è UseUserOverridee.When a CultureInfo object is serialized, all that is actually stored is Name and UseUserOverride. La deserializzazione viene eseguita correttamente solo in un ambiente in cui Name ha lo stesso significato.It is successfully de-serialized only in an environment where that Name has the same meaning. Nei tre esempi seguenti viene illustrato il motivo per cui questa situazione non è sempre:The following three examples show why this is not always the case:

  • Se il CultureTypes valore della proprietà CultureTypes.InstalledWin32Culturesè e se le impostazioni cultura sono state introdotte per la prima volta in una determinata versione del sistema operativo Windows, non è possibile deserializzarlo in una versione precedente di Windows.If the CultureTypes property value is CultureTypes.InstalledWin32Cultures, and if that culture was first introduced in a particular version of the Windows operating system, it is not possible to deserialize it on an earlier version of Windows. Se, ad esempio, le impostazioni cultura sono state introdotte in Windows 10, non possono essere deserializzate in Windows 8.For example, if a culture was introduced in Windows 10, it cannot be deserialized on Windows 8.

  • Se il CultureTypes valore è CultureTypes.UserCustomCulturee nel computer in cui è deserializzato non è installata la lingua personalizzata dell'utente, non è possibile deserializzarla.If the CultureTypes value is CultureTypes.UserCustomCulture, and the computer on which it is de-serialized does not have this user custom culture installed, it is not possible to deserialize it.

  • Se il CultureTypes valore è CultureTypes.ReplacementCulturese il computer in cui è deserializzato non dispone di queste impostazioni cultura di sostituzione, viene deserializzato con lo stesso nome, ma non tutte le stesse caratteristiche.If the CultureTypes value is CultureTypes.ReplacementCultures, and the computer on which it is de-serialized does not have this replacement culture, it de-serializes to the same name, but not all of the same characteristics. Se, ad esempio, en-US è una lingua di sostituzione nel computer a, ma non nel computer b, e CultureInfo se un oggetto che fa riferimento a queste impostazioni cultura viene serializzato nel computer a e deserializzato nel computer b, nessuna delle caratteristiche personalizzate delle impostazioni cultura è trasmessi.For example, if en-US is a replacement culture on computer A, but not on computer B, and if a CultureInfo object referring to this culture is serialized on computer A and de-serialized on computer B, then none of the custom characteristics of the culture are transmitted. Le impostazioni cultura vengono deserializzate correttamente, ma con un significato diverso.The culture deserializes successfully, but with a different meaning.

Override del pannello di controlloControl Panel overrides

L'utente può scegliere di eseguire l'override di alcuni valori associati alle impostazioni cultura correnti di Windows tramite la porzione opzioni internazionali e della lingua del pannello di controllo.The user might choose to override some of the values associated with the current culture of Windows through the regional and language options portion of Control Panel. Ad esempio, l'utente può scegliere di visualizzare la data in un formato diverso o di usare una valuta diversa da quella predefinita per le impostazioni cultura.For example, the user might choose to display the date in a different format or to use a currency other than the default for the culture. In generale, le applicazioni devono rispettare queste sostituzioni utente.In general, your applications should honor these user overrides.

Se UseUserOverride CultureInfo è true e le impostazioni cultura specificate corrispondono alle impostazioni cultura correnti di Windows, utilizza tali sostituzioni, DateTimeFormatInfo incluse le impostazioni utente per DateTimeFormat le proprietà dell'istanza restituita dalla proprietà. e le proprietà dell' NumberFormatInfo istanza restituita NumberFormat dalla proprietà.If UseUserOverride is true and the specified culture matches the current culture of Windows, the CultureInfo uses those overrides, including user settings for the properties of the DateTimeFormatInfo instance returned by the DateTimeFormat property, and the properties of the NumberFormatInfo instance returned by the NumberFormat property. Se le impostazioni utente non sono compatibili con le impostazioni cultura associate a CultureInfo, ad esempio se il calendario selezionato non è uno OptionalCalendarsdei, i risultati dei metodi e i valori delle proprietà non sono definiti.If the user settings are incompatible with the culture associated with the CultureInfo, for example, if the selected calendar is not one of the OptionalCalendars, the results of the methods and the values of the properties are undefined.

Ordinamenti alternativiAlternate sort orders

Alcune impostazioni cultura supportano più di un ordinamento.Some cultures support more than one sort order. Ad esempio:For example:

  • Le impostazioni cultura spagnole (Spagna) hanno due ordinamenti: il tipo di ordinamento internazionale predefinito e quello tradizionale.The Spanish (Spain) culture has two sort orders: the default international sort order, and the traditional sort order. Quando si crea un'istanza CultureInfo di un oggetto con il nome delle impostazioni cultura es-es, viene usato l'ordinamento internazionale.When you instantiate a CultureInfo object with the es-ES culture name, the international sort order is used. Quando si crea un'istanza CultureInfo di un oggetto con il nome delle impostazioni cultura es-es-tradnl, viene usato l'ordinamento tradizionale.When you instantiate a CultureInfo object with the es-ES-tradnl culture name, the traditional sort order is used.

  • Le impostazioni cultura zh-CN (cinese (semplificato, PRC)) supportano due ordinamenti: per pronuncia (impostazione predefinita) e per numero di tratti.The zh-CN (Chinese (Simplified, PRC)) culture supports two sort orders: by pronunciation (the default) and by stroke count. Quando si crea un'istanza CultureInfo di un oggetto con il nome delle impostazioni cultura zh-CN, viene utilizzato l'ordinamento predefinito.When you instantiate a CultureInfo object with the zh-CN culture name, the default sort order is used. Quando si crea un'istanza CultureInfo di un oggetto con un identificatore locale di 0x00020804, le stringhe vengono ordinate in base al numero di tratti.When you instantiate a CultureInfo object with a local identifier of 0x00020804, strings are sorted by stroke count.

Nella tabella seguente sono elencate le impostazioni cultura che supportano l'ordinamento alternativo e gli identificatori per gli ordinamenti predefiniti e alternativi.The following table lists the cultures that support alternate sort orders and the identifiers for the default and alternate sort orders.

Nome delle impostazioni culturaCulture name cultureCulture Nome e identificatore di ordinamento predefinitiDefault sort name and identifier Nome e identificatore di ordinamento alternativiAlternate sort name and identifier
es-ESes-ES Spagnolo (Spagna)Spanish (Spain) Internazionali 0x00000C0AInternational: 0x00000C0A Tradizionale 0x0000040ATraditional: 0x0000040A
zh-TWzh-TW Cinese (Taiwan)Chinese (Taiwan) Numero di tratti: 0x00000404Stroke Count: 0x00000404 Bopomofo 0x00030404Bopomofo: 0x00030404
zh-CNzh-CN Cinese (Repubblica popolare cinese)Chinese (PRC) Pronuncia 0x00000804Pronunciation: 0x00000804 Numero di tratti: 0x00020804Stroke Count: 0x00020804
zh-HKzh-HK Cinese (Hong Kong SAR)Chinese (Hong Kong SAR) Numero di tratti: 0x00000c04Stroke Count: 0x00000c04 Numero di tratti: 0x00020c04Stroke Count: 0x00020c04
zh-SGzh-SG Cinese (Singapore)Chinese (Singapore) Pronuncia 0x00001004Pronunciation: 0x00001004 Numero di tratti: 0x00021004Stroke Count: 0x00021004
zh-MOzh-MO Cinese (Macao)Chinese (Macao SAR) Pronuncia 0x00001404Pronunciation: 0x00001404 Numero di tratti: 0x00021404Stroke Count: 0x00021404
ja-JPja-JP Giapponese (Giappone)Japanese (Japan) Valore predefinito: 0x00000411Default: 0x00000411 Unicode: 0x00010411Unicode: 0x00010411
ko-KRko-KR Coreano (Corea)Korean (Korea) Valore predefinito: 0x00000412Default: 0x00000412 XWansung coreano-Unicode: 0x00010412Korean Xwansung - Unicode: 0x00010412
de-DEde-DE Tedesco (Germania)German (Germany) Dizionario 0x00000407Dictionary: 0x00000407 Ordinamento rubrica DIN: 0x00010407Phone Book Sort DIN: 0x00010407
HU-HUhu-HU Ungherese (Ungheria)Hungarian (Hungary) Valore predefinito: 0x0000040eDefault: 0x0000040e Ordinamento tecnico: 0x0001040eTechnical Sort: 0x0001040e
KA-GEka-GE Georgiano (Georgia)Georgian (Georgia) Tradizionale 0x00000437Traditional: 0x00000437 Ordinamento moderno: 0x00010437Modern Sort: 0x00010437

Le impostazioni cultura correnti e le app UWPThe current culture and UWP apps

Nelle app piattaforma UWP (Universal Windows Platform) (UWP) le CurrentCulture proprietà e CurrentUICulture sono di lettura/scrittura, così come sono nelle app .NET Framework e .NET Core.In Universal Windows Platform (UWP) apps, the CurrentCulture and CurrentUICulture properties are read-write, just as they are in .NET Framework and .NET Core apps. Tuttavia, le app UWP riconoscono le singole impostazioni cultura.However, UWP apps recognize a single culture. Le CurrentCulture proprietà CurrentUICulture e vengono mappate al primo valore nella raccolta Windows. ApplicationModel. resources. Core. ResourceManager. DefaultContext. languages .The CurrentCulture and CurrentUICulture properties map to the first value in the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection.

Nelle app .NET Framework e .NET Core le impostazioni cultura correnti sono un'impostazione per thread, mentre le CurrentCulture proprietà e CurrentUICulture riflettono le impostazioni cultura e le impostazioni cultura dell'interfaccia utente del thread corrente.In .NET Framework and .NET Core apps, the current culture is a per-thread setting, and the CurrentCulture and CurrentUICulture properties reflect the culture and UI culture of the current thread only. Nelle app UWP, le impostazioni cultura correnti vengono mappate alla raccolta Windows. ApplicationModel. resources. Core. ResourceManager. DefaultContext. languages , che è un'impostazione globale.In UWP apps, the current culture maps to the Windows.ApplicationModel.Resources.Core.ResourceManager.DefaultContext.Languages collection, which is a global setting. L'impostazione CurrentCulture della CurrentUICulture proprietà o modifica le impostazioni cultura dell'intera app; le impostazioni cultura non possono essere impostate in base al thread.Setting the CurrentCulture or CurrentUICulture property changes the culture of the entire app; culture cannot be set on a per-thread basis.

Costruttori

CultureInfo(Int32) CultureInfo(Int32) CultureInfo(Int32) CultureInfo(Int32)

Inizializza una nuova istanza della classe CultureInfo in base alle impostazioni cultura specificate dall'identificatore delle impostazioni cultura.Initializes a new instance of the CultureInfo class based on the culture specified by the culture identifier.

CultureInfo(Int32, Boolean) CultureInfo(Int32, Boolean) CultureInfo(Int32, Boolean) CultureInfo(Int32, Boolean)

Inizializza una nuova istanza della classe CultureInfo in base alle impostazioni cultura specificate dall'identificatore di impostazioni cultura e al valore booleano che specifica se usare le impostazioni cultura del sistema selezionate dall'utente.Initializes a new instance of the CultureInfo class based on the culture specified by the culture identifier and on the Boolean that specifies whether to use the user-selected culture settings from the system.

CultureInfo(String) CultureInfo(String) CultureInfo(String) CultureInfo(String)

Inizializza una nuova istanza della classe CultureInfo in base alle impostazioni cultura specificate per nome.Initializes a new instance of the CultureInfo class based on the culture specified by name.

CultureInfo(String, Boolean) CultureInfo(String, Boolean) CultureInfo(String, Boolean) CultureInfo(String, Boolean)

Inizializza una nuova istanza della classe CultureInfo in base alle impostazioni cultura specificate per nome e al valore booleano che indica se usare le impostazioni cultura del sistema selezionate dall'utente.Initializes a new instance of the CultureInfo class based on the culture specified by name and on the Boolean that specifies whether to use the user-selected culture settings from the system.

Proprietà

Calendar Calendar Calendar Calendar

Ottiene il calendario predefinito usato per le impostazioni cultura.Gets the default calendar used by the culture.

CompareInfo CompareInfo CompareInfo CompareInfo

Ottiene l'oggetto CompareInfo che definisce come confrontare le stringhe per le impostazioni cultura.Gets the CompareInfo that defines how to compare strings for the culture.

CultureTypes CultureTypes CultureTypes CultureTypes

Ottiene i tipi di impostazioni cultura che riguardano l'oggetto CultureInfo corrente.Gets the culture types that pertain to the current CultureInfo object.

CurrentCulture CurrentCulture CurrentCulture CurrentCulture

Ottiene o imposta l'oggetto CultureInfo che rappresenta le impostazioni cultura usate dal thread corrente.Gets or sets the CultureInfo object that represents the culture used by the current thread.

CurrentUICulture CurrentUICulture CurrentUICulture CurrentUICulture

Ottiene o imposta l'oggetto CultureInfo che rappresenta le impostazioni cultura correnti dell'interfaccia utente usate da Gestione risorse per cercare le risorse specifiche delle impostazioni cultura in fase di esecuzione.Gets or sets the CultureInfo object that represents the current user interface culture used by the Resource Manager to look up culture-specific resources at run time.

DateTimeFormat DateTimeFormat DateTimeFormat DateTimeFormat

Ottiene o imposta un oggetto DateTimeFormatInfo che definisce il formato culturalmente appropriato per la visualizzazione della data e dell'ora.Gets or sets a DateTimeFormatInfo that defines the culturally appropriate format of displaying dates and times.

DefaultThreadCurrentCulture DefaultThreadCurrentCulture DefaultThreadCurrentCulture DefaultThreadCurrentCulture

Ottiene o imposta le impostazioni cultura predefinite per i thread nel dominio dell'applicazione corrente.Gets or sets the default culture for threads in the current application domain.

DefaultThreadCurrentUICulture DefaultThreadCurrentUICulture DefaultThreadCurrentUICulture DefaultThreadCurrentUICulture

Ottiene o imposta le impostazioni cultura predefinite dell'interfaccia utente per i thread nel dominio dell'applicazione corrente.Gets or sets the default UI culture for threads in the current application domain.

DisplayName DisplayName DisplayName DisplayName

Ottiene il nome completo delle impostazioni cultura localizzate.Gets the full localized culture name.

EnglishName EnglishName EnglishName EnglishName

Ottiene il nome delle impostazioni cultura nel formato lingua [paese] in inglese.Gets the culture name in the format languagefull [country/regionfull] in English.

IetfLanguageTag IetfLanguageTag IetfLanguageTag IetfLanguageTag

Deprecato.Deprecated. Ottiene l'identificazione dello standard RFC 4646 per una lingua.Gets the RFC 4646 standard identification for a language.

InstalledUICulture InstalledUICulture InstalledUICulture InstalledUICulture

Ottiene l'oggetto CultureInfo che rappresenta le impostazioni cultura installate con il sistema operativo.Gets the CultureInfo that represents the culture installed with the operating system.

InvariantCulture InvariantCulture InvariantCulture InvariantCulture

Ottiene l'oggetto CultureInfo indipendente dalle impostazioni cultura.Gets the CultureInfo object that is culture-independent (invariant).

IsNeutralCulture IsNeutralCulture IsNeutralCulture IsNeutralCulture

Ottiene un valore che indica se la classe CultureInfo corrente rappresenta impostazioni cultura non associate ad alcun paese.Gets a value indicating whether the current CultureInfo represents a neutral culture.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ottiene un valore che indica se la classe CultureInfo corrente è in sola lettura.Gets a value indicating whether the current CultureInfo is read-only.

KeyboardLayoutId KeyboardLayoutId KeyboardLayoutId KeyboardLayoutId

Ottiene l'ID impostazioni locali di input attivo.Gets the active input locale identifier.

LCID LCID LCID LCID

Ottiene l'identificatore di impostazioni cultura per la classe CultureInfo corrente.Gets the culture identifier for the current CultureInfo.

Name Name Name Name

Ottiene il nome delle impostazioni cultura nel formato codicelingua2-codicepaese2.Gets the culture name in the format languagecode2-country/regioncode2.

NativeName NativeName NativeName NativeName

Ottiene il nome di impostazioni cultura, costituite da lingua, paese/provincia e indicatore alfabeto facoltativo, nella lingua impostata per la visualizzazione.Gets the culture name, consisting of the language, the country/region, and the optional script, that the culture is set to display.

NumberFormat NumberFormat NumberFormat NumberFormat

Ottiene o imposta un oggetto NumberFormatInfo che definisce il formato culturalmente appropriato per la visualizzazione di numeri, valute e percentuali.Gets or sets a NumberFormatInfo that defines the culturally appropriate format of displaying numbers, currency, and percentage.

OptionalCalendars OptionalCalendars OptionalCalendars OptionalCalendars

Ottiene l'elenco dei calendari utilizzabili con le impostazioni cultura.Gets the list of calendars that can be used by the culture.

Parent Parent Parent Parent

Ottiene l'oggetto CultureInfo che rappresenta le impostazioni cultura padre dell'oggetto CultureInfo corrente.Gets the CultureInfo that represents the parent culture of the current CultureInfo.

TextInfo TextInfo TextInfo TextInfo

Ottiene l'oggetto TextInfo che definisce il sistema di scrittura associato alle impostazioni cultura.Gets the TextInfo that defines the writing system associated with the culture.

ThreeLetterISOLanguageName ThreeLetterISOLanguageName ThreeLetterISOLanguageName ThreeLetterISOLanguageName

Ottiene il codice ISO 639-2 di tre lettere per la lingua della classe CultureInfo corrente.Gets the ISO 639-2 three-letter code for the language of the current CultureInfo.

ThreeLetterWindowsLanguageName ThreeLetterWindowsLanguageName ThreeLetterWindowsLanguageName ThreeLetterWindowsLanguageName

Ottiene il codice di tre lettere per la lingua così come è definito dall'API di Windows.Gets the three-letter code for the language as defined in the Windows API.

TwoLetterISOLanguageName TwoLetterISOLanguageName TwoLetterISOLanguageName TwoLetterISOLanguageName

Ottiene il codice ISO 639-1 di due lettere per la lingua della classe CultureInfo corrente.Gets the ISO 639-1 two-letter code for the language of the current CultureInfo.

UseUserOverride UseUserOverride UseUserOverride UseUserOverride

Ottiene un valore che indica se l'oggetto CultureInfo corrente usa le impostazioni cultura selezionate dall'utente.Gets a value indicating whether the current CultureInfo object uses the user-selected culture settings.

Metodi

ClearCachedData() ClearCachedData() ClearCachedData() ClearCachedData()

Aggiorna le informazioni relative alle impostazioni cultura memorizzate nella cache.Refreshes cached culture-related information.

Clone() Clone() Clone() Clone()

Crea una copia dell'oggetto CultureInfo corrente.Creates a copy of the current CultureInfo.

CreateSpecificCulture(String) CreateSpecificCulture(String) CreateSpecificCulture(String) CreateSpecificCulture(String)

Crea un oggetto CultureInfo che rappresenta le impostazioni cultura specifiche associate al nome specificato.Creates a CultureInfo that represents the specific culture that is associated with the specified name.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato coincide con le stesse impostazioni cultura della classe CultureInfo corrente.Determines whether the specified object is the same culture as the current CultureInfo.

GetConsoleFallbackUICulture() GetConsoleFallbackUICulture() GetConsoleFallbackUICulture() GetConsoleFallbackUICulture()

Ottiene impostazioni cultura dell'interfaccia utente alternative adatte per le applicazioni di console quando le impostazioni cultura predefinite dell'interfaccia utente grafica non sono adatte.Gets an alternate user interface culture suitable for console applications when the default graphic user interface culture is unsuitable.

GetCultureInfo(Int32) GetCultureInfo(Int32) GetCultureInfo(Int32) GetCultureInfo(Int32)

Recupera un'istanza di sola lettura e memorizzata nella cache di determinate impostazioni cultura utilizzando l'identificatore delle impostazioni cultura specificato.Retrieves a cached, read-only instance of a culture by using the specified culture identifier.

GetCultureInfo(String) GetCultureInfo(String) GetCultureInfo(String) GetCultureInfo(String)

Recupera un'istanza di sola lettura e inserita nella cache di determinate impostazioni cultura utilizzando il nome delle impostazioni cultura specificato.Retrieves a cached, read-only instance of a culture using the specified culture name.

GetCultureInfo(String, String) GetCultureInfo(String, String) GetCultureInfo(String, String) GetCultureInfo(String, String)

Recupera un'istanza di sola lettura e inserita nella cache di determinate impostazioni cultura.Retrieves a cached, read-only instance of a culture. I parametri specificano le impostazioni cultura inizializzate con gli oggetti TextInfo e CompareInfo specificati da altre impostazioni cultura.Parameters specify a culture that is initialized with the TextInfo and CompareInfo objects specified by another culture.

GetCultureInfoByIetfLanguageTag(String) GetCultureInfoByIetfLanguageTag(String) GetCultureInfoByIetfLanguageTag(String) GetCultureInfoByIetfLanguageTag(String)

Deprecato.Deprecated. Recupera un oggetto CultureInfo di sola lettura con caratteristiche linguistiche identificate dal tag della lingua RFC 4646 specificato.Retrieves a read-only CultureInfo object having linguistic characteristics that are identified by the specified RFC 4646 language tag.

GetCultures(CultureTypes) GetCultures(CultureTypes) GetCultures(CultureTypes) GetCultures(CultureTypes)

Ottiene l'elenco delle impostazioni cultura supportate filtrate dal parametro CultureTypes specificato.Gets the list of supported cultures filtered by the specified CultureTypes parameter.

GetFormat(Type) GetFormat(Type) GetFormat(Type) GetFormat(Type)

Ottiene un oggetto che definisce le modalità di formattazione del tipo specificato.Gets an object that defines how to format the specified type.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Viene utilizzato come funzione hash per l'oggetto CultureInfo corrente, adatto per algoritmi hash e strutture di dati, ad esempio una tabella hash.Serves as a hash function for the current CultureInfo, suitable for hashing algorithms and data structures, such as a hash table.

GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ReadOnly(CultureInfo) ReadOnly(CultureInfo) ReadOnly(CultureInfo) ReadOnly(CultureInfo)

Restituisce un wrapper di sola lettura per l'oggetto CultureInfo specificato.Returns a read-only wrapper around the specified CultureInfo object.

ToString() ToString() ToString() ToString()

Restituisce una stringa contenente il nome della classe CultureInfo corrente nel formato codicelingua2-codicepaese2.Returns a string containing the name of the current CultureInfo in the format languagecode2-country/regioncode2.

Si applica a

Vedi anche