Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Proprietà CurrentCulture
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Proprietà CultureInfo.CurrentCulture

Ottiene l'oggetto CultureInfo che rappresenta le impostazioni cultura utilizzate dal thread corrente.

Spazio dei nomi:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

public static CultureInfo CurrentCulture { get; }

Valore proprietà

Tipo: System.Globalization.CultureInfo
Oggetto che rappresenta le impostazioni cultura utilizzate dal thread corrente.

Le impostazioni cultura sono una proprietà del thread in esecuzione. Questa proprietà di sola lettura equivale a recuperare l'oggetto CultureInfo restituito dalla proprietà Thread.CurrentCulture. L'oggetto CultureInfo restituito dalla proprietà e i relativi oggetti associati determinano il formato predefinito per le date, le ore, i numeri, i valori di valuta, il criterio di ordinamento del testo, le convenzioni sulla combinazione di maiuscole e minuscole e i confronti di stringhe.

Come vengono determinate le impostazioni cultura del thread

Quando un thread viene avviato, le impostazioni cultura vengono inizialmente determinate come segue:

  • Recuperando le impostazioni cultura specificate dalla proprietà DefaultThreadCurrentCulture nel dominio applicazione in cui il thread è in esecuzione, se il valore della proprietà non è un null.

  • Chiamando la funzione GetUserDefaultLocaleName di Windows.

Si noti che se si configurano delle impostazioni cultura specifiche differenti dalle impostazioni cultura installate o dalle impostazioni cultura preferite dell'utente e l'applicazione avvia più thread, le impostazioni cultura correnti di questi thread saranno le impostazioni cultura restituite dalla funzione GetUserDefaultLocaleName, a meno che non sia siano state assegnate delle impostazioni cultura alla proprietà DefaultThreadCurrentCulture nel dominio applicazione in cui il thread è in esecuzione.

Per ulteriori informazioni su come vengono determinate le impostazioni culturali di un thread, vedere la sezione "Impostazioni culturali e thread" nella pagina di riferimento CultureInfo.

Impostazione esplicita della proprietà CurrentCulture

Per modificare le impostazioni cultura utilizzate da un thread esistente, impostare la proprietà Thread.CurrentCulture sulle nuove impostazioni cultura. Se si modificano esplicitamente le impostazioni cultura del thread in questo modo, questa modifica viene mantenuta anche se il thread supera i limiti del dominio applicazione. Nell'esempio seguente vengono modificate le impostazioni cultura del thread corrente a olandese (Paesi Bassi). Viene inoltre mostrato che, quando il thread corrente supera i limiti del dominio applicazione, le impostazioni cultura correnti rimangono le stesse.


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

public class Info : MarshalByRefObject
{
   public void ShowCurrentCulture()
   {
      Console.WriteLine("Culture of {0} in application domain {1}: {2}",
                        Thread.CurrentThread.Name,
                        AppDomain.CurrentDomain.FriendlyName,
                        CultureInfo.CurrentCulture.Name);
   }
}

public class Example
{
   public static void Main()
   {
      Info inf = new Info();
      // Set the current culture to Dutch (Netherlands).
      Thread.CurrentThread.Name = "MainThread";
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-NL");
      inf.ShowCurrentCulture();

      // Create a new application domain.
       AppDomain ad = AppDomain.CreateDomain("Domain2");
       Info inf2 = (Info) ad.CreateInstanceAndUnwrap(typeof(Info).Assembly.FullName, "Info");
       inf2.ShowCurrentCulture();                       
   }
}
// The example displays the following output:
//       Culture of MainThread in application domain ChangeCulture1.exe: nl-NL
//       Culture of MainThread in application domain Domain2: nl-NL


NotaNota

La modifica delle impostazioni cultura utilizzando la proprietà Thread.CurrentThread richiede un'autorizzazione SecurityPermission con il set di valori ControlThread. La modifica dei thread rappresenta un'operazione rischiosa a causa dello stato di sicurezza associato ai thread. Questa autorizzazione deve pertanto essere associata solo a codice attendibile e solo in caso di necessità. Non è possibile modificare le impostazioni cultura di un thread in codice semi-trusted.

A partire da .NET Framework 4, è possibile modificare in modo esplicito le impostazioni cultura del thread corrente con delle impostazioni cultura specifiche (come francese (Canada)) o con delle impostazioni cultura non associate ad alcun paese (come francese). Quando un oggetto CultureInfo rappresenta delle impostazioni cultura non associate ad alcun paese, i valori delle proprietà CultureInfo come Calendar, CompareInfo, DateTimeFormat, NumberFormat e TextInfo riflettono le impostazioni cultura specifiche associate alle impostazioni cultura non associate ad alcun paese. Ad esempio, le impostazioni cultura dominanti per le impostazioni cultura inglesi sono l'inglese (Stati Uniti); le impostazioni cultura dominanti per le impostazioni cultura tedesche sono il tedesco (Germania). Nell'esempio seguente viene illustrata la differenza nella formattazione quando il thread corrente viene configurato con impostazioni cultura specifiche, francese (Canada), e con impostazioni cultura non associate ad alcun paese, francese.


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

public class Example
{
   public static void Main()
   {
      double value = 1634.92;
      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}\n", value);

      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}", value);
   }
}
// The example displays the following output:
//       Current Culture: fr-CA
//       1 634,92 $
//       
//       Current Culture: fr
//       1 634,92 €


È inoltre possibile utilizzare la proprietà Thread.CurrentCulture con la proprietà HttpRequest.UserLanguages per impostare la proprietà CurrentCulture di un'applicazione ASP.NET con le impostazioni cultura preferite dell'utente, come viene illustrato nell'esempio seguente.


Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);


Le impostazioni cultura correnti e gli override dell'utente

Windows consente agli utenti di eseguire l'override dei valori delle proprietà standard dell'oggetto CultureInfo e dei relativi oggetti associati utilizzando Opzioni internazionali e della lingua nel Pannello di controllo. L'oggetto CultureInfo restituito dalla proprietà CurrentCulture rifletterà gli override dell'utente nei seguenti casi:

  • Se le impostazioni cultura del thread corrente vengono definite in modo implicito dalla funzione GetUserDefaultLocaleName di Windows.

  • Se le impostazioni cultura del thread corrente definite dalla proprietà DefaultThreadCurrentCulture corrispondono alle impostazioni cultura correnti del sistema Windows.

  • Se le impostazioni cultura del thread corrente vengono definite in modo esplicito con delle impostazioni cultura restituite dal metodo CreateSpecificCulture e se tali impostazioni cultura corrispondono alle impostazioni cultura correnti del sistema Windows.

  • Se le impostazioni cultura del thread corrente vengono definite in modo esplicito con delle impostazioni cultura istanziate dal costruttore CultureInfo(String) e se tali impostazioni cultura corrispondono alle impostazioni cultura correnti del sistema Windows.

In alcuni casi, in particolare per le applicazioni server, definire le impostazioni cultura correnti con un oggetto CultureInfo che riflette l'override dell'utente potrebbe essere non desiderabile. In alternativa, è possibile definire le impostazioni cultura del thread corrente con un oggetto CultureInfo che non riflette l'override dell'utente nei modi seguenti:

Nell'esempio di codice riportato di seguito viene illustrato come modificare CurrentCulture e CurrentUICulture del thread corrente.


using System;
using System.Globalization;
using System.Security.Permissions;
using System.Threading;

[assembly:SecurityPermission( SecurityAction.RequestMinimum, ControlThread = true )]
public class SamplesCultureInfo  {

   public static void Main()  {

      // Displays the name of the CurrentCulture of the current thread.
      Console.WriteLine( "CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name );

      // Changes the CurrentCulture of the current thread to th-TH.
      Thread.CurrentThread.CurrentCulture = new CultureInfo( "th-TH", false );
      Console.WriteLine( "CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name );

      // Displays the name of the CurrentUICulture of the current thread.
      Console.WriteLine( "CurrentUICulture is {0}.", CultureInfo.CurrentUICulture.Name );

      // Changes the CurrentUICulture of the current thread to ja-JP.
      Thread.CurrentThread.CurrentUICulture = new CultureInfo( "ja-JP", false );
      Console.WriteLine( "CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name );

   }

}

/*
This code produces the following output, if the ControlThread permission is granted (for example, if this code is run from the local drive).

CurrentCulture is en-US.
CurrentCulture is now th-TH.
CurrentUICulture is en-US.
CurrentUICulture is now ja-JP.

*/


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft