Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe NumberFormatInfo

 

Data di pubblicazione: ottobre 2016

Fornisce informazioni specifiche delle impostazioni cultura per la formattazione e l'analisi dei valori numerici.

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

System.Object
  System.Globalization.NumberFormatInfo

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class NumberFormatInfo : ICloneable, IFormatProvider

NomeDescrizione
System_CAPS_pubmethodNumberFormatInfo()

Inizializza una nuova istanza scrivibile della classe NumberFormatInfo che è indipendente dalle impostazioni cultura (invariante).

NomeDescrizione
System_CAPS_pubpropertyCurrencyDecimalDigits

Ottiene o imposta il numero di posizioni decimali da usare nei valori di valuta.

System_CAPS_pubpropertyCurrencyDecimalSeparator

Ottiene o imposta la stringa da usare come separatore decimale nei valori di valuta.

System_CAPS_pubpropertyCurrencyGroupSeparator

Ottiene o imposta la stringa di separazione dei gruppi di cifre che si trovano a sinistra del separatore decimale nei valori di valuta.

System_CAPS_pubpropertyCurrencyGroupSizes

Ottiene o imposta il numero di cifre in ciascun gruppo che si trova a sinistra del separatore decimale nei valori di valuta.

System_CAPS_pubpropertyCurrencyNegativePattern

Ottiene o imposta il modello di formato per i valori di valuta negativi.

System_CAPS_pubpropertyCurrencyPositivePattern

Ottiene o imposta il modello di formato per i valori di valuta positivi.

System_CAPS_pubpropertyCurrencySymbol

Ottiene o imposta la stringa da usare come simbolo di valuta.

System_CAPS_pubpropertySystem_CAPS_staticCurrentInfo

Ottiene un oggetto NumberFormatInfo di sola lettura che formatta i valori in base alle impostazioni cultura correnti.

System_CAPS_pubpropertyDigitSubstitution

Ottiene o imposta un valore che specifica come viene visualizzata la forma di una cifra dall'interfaccia utente grafica.

System_CAPS_pubpropertySystem_CAPS_staticInvariantInfo

Ottiene un oggetto NumberFormatInfo di sola lettura indipendente dalle impostazioni cultura (invariante).

System_CAPS_pubpropertyIsReadOnly

Ottiene un valore che indica se l'oggetto NumberFormatInfo è di sola lettura.

System_CAPS_pubpropertyNaNSymbol

Ottiene o imposta la stringa che rappresenta il valore IEEE NaN (Not a Number).

System_CAPS_pubpropertyNativeDigits

Ottiene o imposta una matrice di stringhe di cifre native equivalenti ai numeri europei da 0 a 9.

System_CAPS_pubpropertyNegativeInfinitySymbol

Ottiene o imposta la stringa che rappresenta il valore di infinito negativo.

System_CAPS_pubpropertyNegativeSign

Ottiene o imposta la stringa che indica che il numero associato è negativo.

System_CAPS_pubpropertyNumberDecimalDigits

Ottiene o imposta il numero di posizioni decimali da usare nei valori numerici.

System_CAPS_pubpropertyNumberDecimalSeparator

Ottiene o imposta la stringa da usare come separatore decimale nei valori numerici.

System_CAPS_pubpropertyNumberGroupSeparator

Ottiene o imposta la stringa di separazione dei gruppi di cifre che si trovano a sinistra del separatore decimale nei valori numerici.

System_CAPS_pubpropertyNumberGroupSizes

Ottiene o imposta il numero di cifre in ciascun gruppo che si trova a sinistra del separatore decimale nei valori numerici.

System_CAPS_pubpropertyNumberNegativePattern

Ottiene o imposta il modello di formato per i valori numerici negativi.

System_CAPS_pubpropertyPercentDecimalDigits

Ottiene o imposta il numero di posizioni decimali da usare nei valori percentuali.

System_CAPS_pubpropertyPercentDecimalSeparator

Ottiene o imposta la stringa da usare come separatore decimale nei valori percentuali.

System_CAPS_pubpropertyPercentGroupSeparator

Ottiene o imposta la stringa di separazione dei gruppi di cifre che si trovano a sinistra del separatore decimale nei valori percentuali.

System_CAPS_pubpropertyPercentGroupSizes

Ottiene o imposta il numero di cifre in ciascun gruppo che si trova a sinistra del separatore decimale nei valori percentuali.

System_CAPS_pubpropertyPercentNegativePattern

Ottiene o imposta il modello di formato per i valori percentuali negativi.

System_CAPS_pubpropertyPercentPositivePattern

Ottiene o imposta il modello di formato per i valori percentuali positivi.

System_CAPS_pubpropertyPercentSymbol

Ottiene o imposta la stringa da usare come simbolo di percentuale.

System_CAPS_pubpropertyPerMilleSymbol

Ottiene o imposta la stringa da usare come simbolo di per mille.

System_CAPS_pubpropertyPositiveInfinitySymbol

Ottiene o imposta la stringa che rappresenta il valore di infinito positivo.

System_CAPS_pubpropertyPositiveSign

Ottiene o imposta la stringa che indica che il numero associato è positivo.

NomeDescrizione
System_CAPS_pubmethodClone()

Crea una copia superficiale dell'oggetto NumberFormatInfo.

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_pubmethodGetFormat(Type)

Ottiene un oggetto del tipo specificato che fornisce un servizio di formattazione dei numeri.

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodSystem_CAPS_staticGetInstance(IFormatProvider)

Ottiene l'oggetto NumberFormatInfo associato all'oggetto IFormatProvider specificato.

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodSystem_CAPS_staticReadOnly(NumberFormatInfo)

Restituisce un wrapper NumberFormatInfo di sola lettura.

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

È possibile creare un'istanza di un NumberFormatInfo oggetto che rappresenta le convenzioni di formattazione delle impostazioni cultura correnti, le impostazioni cultura invarianti, impostazioni cultura specifiche o una lingua.

È possibile creare un'istanza di un NumberFormatInfo oggetto per impostazioni cultura del thread corrente in uno dei modi seguenti. In ogni caso, l'oggetto restituito NumberFormatInfo oggetto è di sola lettura.

L'esempio seguente usa i tre modi per creare NumberFormatInfo gli oggetti che rappresentano le convenzioni di formattazione delle impostazioni cultura correnti. Consente inoltre di recuperare il valore di IsReadOnly proprietà per illustrare che ogni oggetto è di sola lettura.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberFormatInfo current1 = CultureInfo.CurrentCulture.NumberFormat;
      Console.WriteLine(current1.IsReadOnly);

      NumberFormatInfo current2 = NumberFormatInfo.CurrentInfo;
      Console.WriteLine(current2.IsReadOnly);

      NumberFormatInfo current3 = NumberFormatInfo.GetInstance(CultureInfo.CurrentCulture);
      Console.WriteLine(current3.IsReadOnly);
   }
}
// The example displays the following output:
//       True
//       True
//       True

È possibile creare scrivibile NumberFormatInfo oggetto che rappresenta le convenzioni delle impostazioni cultura del thread corrente in uno dei modi seguenti:

  • Recuperando un NumberFormatInfo oggetto in uno dei modi illustrati nell'esempio di codice precedente e la chiamata di Clone metodo sull'oggetto restituito NumberFormatInfo oggetto. Crea una copia dell'originale NumberFormatInfo dell'oggetto, con la differenza che il relativo IsReadOnly proprietà false.

  • Chiamando il CultureInfo.CreateSpecificCulture metodo per creare un CultureInfo dell'oggetto che rappresenta le impostazioni cultura correnti e utilizzando quindi la CultureInfo.NumberFormat proprietà da recuperare il NumberFormatInfo oggetto.

L'esempio seguente illustra questi due modi per creare un'istanza di un NumberFormatInfo dell'oggetto e visualizza il valore della relativa IsReadOnly proprietà per illustrare che l'oggetto non è in sola lettura.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberFormatInfo current1 = NumberFormatInfo.CurrentInfo;
      current1 = (NumberFormatInfo) current1.Clone();
      Console.WriteLine(current1.IsReadOnly);

      CultureInfo culture2 = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
      NumberFormatInfo current2 = culture2.NumberFormat;
      Console.WriteLine(current2.IsReadOnly);
   }
}
// The example displays the following output:
//       False
//       False

Si noti che il sistema operativo Windows consente all'utente di eseguire l'override di alcune delle NumberFormatInfo i valori delle proprietà utilizzati nella formattazione numerica e tramite operazioni di analisi di paese e lingua nel Pannello di controllo. Ad esempio, un utente le cui impostazioni cultura inglese (Stati Uniti) potrebbe scegliere di visualizzare i valori di valuta come USD 1.1 anziché il valore predefinito di $1.1. Il NumberFormatInfo gli oggetti recuperati nei modi descritti in precedenza riflettono tutti questi override dell'utente. Se si tratta di indesiderati, è possibile creare un NumberFormatInfo oggetto che non rifletta l'override dell'utente (ed è anche in lettura/scrittura anziché di sola lettura) chiamando il CultureInfo.CultureInfo(String, Boolean) costruttore e fornendo un valore di false per il useUserOverride argomento. Nell'esempio seguente viene illustrato questo concetto per un sistema con impostazioni cultura correnti sono inglese (Stati Uniti) e il cui simbolo di valuta è stato modificato il valore predefinito $ a USD.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture;
      NumberFormatInfo nfi;

      culture = CultureInfo.CurrentCulture;
      nfi = culture.NumberFormat;
      Console.WriteLine("Culture Name:    {0}", culture.Name);
      Console.WriteLine("User Overrides:  {0}", culture.UseUserOverride);
      Console.WriteLine("Currency Symbol: {0}\n", culture.NumberFormat.CurrencySymbol);

      culture = new CultureInfo(CultureInfo.CurrentCulture.Name, false);
      Console.WriteLine("Culture Name:    {0}", culture.Name);
      Console.WriteLine("User Overrides:  {0}", culture.UseUserOverride);
      Console.WriteLine("Currency Symbol: {0}", culture.NumberFormat.CurrencySymbol);
   }
}
// The example displays the following output:
//       Culture Name:    en-US
//       User Overrides:  True
//       Currency Symbol: USD
//       
//       Culture Name:    en-US
//       User Overrides:  False
//       Currency Symbol: $

Se il CultureInfo.UseUserOverride è impostata su true, le proprietà CultureInfo.DateTimeFormat, CultureInfo.NumberFormat, e CultureInfo.TextInfo vengono recuperati anche dalle impostazioni dell'utente. Se le impostazioni utente non sono compatibili con le impostazioni cultura associate il CultureInfo oggetto (ad esempio, se il calendario selezionato non è uno dei calendari elencati per il OptionalCalendars proprietà), i risultati dei metodi e i valori delle proprietà sono indefiniti.

Le impostazioni cultura invarianti rappresenta impostazioni cultura che sono indipendente dalle impostazioni cultura. È basato sulla lingua inglese, ma non su qualsiasi inglese paese specifico. Sebbene i dati delle impostazioni cultura specifiche possono essere dinamici e modificabili per riflettere nuove convenzioni relative alla lingua o le preferenze dell'utente, non modifica i dati delle impostazioni cultura invarianti. Oggetto NumberFormatInfo oggetto che rappresenta le convenzioni di formattazione della lingua inglese può essere utilizzato per la formattazione di operazioni in cui le stringhe non varino dalle impostazioni cultura.

È possibile creare un'istanza di un NumberFormatInfo oggetto che rappresenta le convenzioni di formattazione delle impostazioni cultura invarianti nei modi seguenti:

  • Recuperando il valore di InvariantInfo proprietà. L'oggetto restituito NumberFormatInfo oggetto è di sola lettura.

  • Recuperando il valore della CultureInfo.NumberFormat proprietà la CultureInfo oggetto restituito dalla CultureInfo.InvariantCulture proprietà. L'oggetto restituito NumberFormatInfo oggetto è di sola lettura.

  • Tramite la chiamata senza parametri NumberFormatInfo costruttore della classe. L'oggetto restituito NumberFormatInfo è lettura/scrittura.

L'esempio seguente usa ciascuno di questi metodi per creare un'istanza di un NumberFormatInfo oggetto che rappresenta le impostazioni cultura invarianti. Quindi, indica se l'oggetto è di sola lettura,

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberFormatInfo nfi;

      nfi = System.Globalization.NumberFormatInfo.InvariantInfo;
      Console.WriteLine(nfi.IsReadOnly);               

      nfi = CultureInfo.InvariantCulture.NumberFormat;
      Console.WriteLine(nfi.IsReadOnly);               

      nfi = New NumberFormatInfo();
      Console.WriteLine(nfi.IsReadOnly);               
   }
}
// The example displays the following output:
//       True
//       True
//       False

Impostazioni cultura specifiche rappresenta una lingua parlata in un paese specifico. Ad esempio, en-US è una lingua specifica che rappresenta la lingua inglese parlata negli Stati Uniti ed en-CA è una lingua specifica che rappresenta la lingua inglese parlata in Canada. È possibile creare un'istanza di un NumberFormatInfo oggetto che rappresenta le convenzioni di formattazione delle impostazioni cultura specifiche nei modi seguenti:

L'esempio seguente usa questi quattro modi per creare un NumberFormatInfo che riflette le convenzioni di formattazione delle impostazioni cultura indonesiano (Indonesia). Indica inoltre se ogni oggetto è di sola lettura.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture;
      NumberFormatInfo nfi;

      nfi = CultureInfo.GetCultureInfo("id-ID").NumberFormat;
      Console.WriteLine("Read-only: {0}", nfi.IsReadOnly);

      culture = new CultureInfo("id-ID");
      nfi = NumberFormatInfo.GetInstance(culture);
      Console.WriteLine("Read-only: {0}", nfi.IsReadOnly);

      culture = CultureInfo.CreateSpecificCulture("id-ID");
      nfi = culture.NumberFormat;
      Console.WriteLine("Read-only: {0}", nfi.IsReadOnly);

      culture = new CultureInfo("id-ID");
      nfi = culture.NumberFormat;
      Console.WriteLine("Read-only: {0}", nfi.IsReadOnly);
   }
}
// The example displays the following output:
//       Read-only: True
//       Read-only: False
//       Read-only: False
//       Read-only: False

Impostazioni cultura neutre rappresenta una lingua che è indipendente da un paese/regione o da impostazioni cultura. In genere è l'elemento padre di uno o più impostazioni cultura specifiche. Ad esempio, fr è una lingua per la lingua francese e il padre delle impostazioni cultura fr-FR. Si crea un NumberFormatInfo oggetto che rappresenta le convenzioni di formattazione della lingua nello stesso modo in cui si crea un NumberFormatInfo oggetto che rappresenta le convenzioni di formattazione delle impostazioni cultura specifiche.

System_CAPS_noteNota

Nel .NET Framework 3.5 e nelle versioni precedenti, si tenta di recuperare un NumberFormatInfo oggetto che riflette le convenzioni di formattazione delle impostazioni cultura neutre genera un NotSupportedException (eccezione).

Tuttavia, poiché è indipendente da un paese specifico, una lingua non dispone delle informazioni di formattazione specifiche delle impostazioni cultura. Anziché compilare il NumberFormatInfo dell'oggetto con valori di tipo generici, .NET Framework restituisce un NumberFormatInfo oggetto che riflette le convenzioni di formattazione di un oggetto specifico delle impostazioni cultura che è un figlio di impostazioni cultura di sistema. Ad esempio, il NumberFormatInfo dell'oggetto per la lingua neutra en riflette le convenzioni di formattazione delle impostazioni cultura en-US e NumberFormatInfo dell'oggetto per le impostazioni cultura fr riflette le convenzioni di formattazione delle impostazioni cultura fr-FR.

È possibile utilizzare il codice seguente per determinare ogni lingua rappresenta le convenzioni di formattazione quali impostazioni cultura specifiche.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      // Get all the neutral cultures
      List<String> names = new List<String>();
      Array.ForEach(CultureInfo.GetCultures(CultureTypes.NeutralCultures),
                    culture => names.Add(culture.Name));
      names.Sort();
      foreach (var name in names) {
         // Ignore the invariant culture.
         if (name == "") continue;

         ListSimilarChildCultures(name);        
      }
   }

   private static void ListSimilarChildCultures(string name)
   { 
      // Create the neutral NumberFormatInfo object.
      NumberFormatInfo nfi = CultureInfo.GetCultureInfo(name).NumberFormat;
      // Retrieve all specific cultures of the neutral culture.
      CultureInfo[] cultures = Array.FindAll(CultureInfo.GetCultures(CultureTypes.SpecificCultures), 
                               culture => culture.Name.StartsWith(name + "-", StringComparison.OrdinalIgnoreCase));
      // Create an array of NumberFormatInfo properties
      PropertyInfo[] properties = typeof(NumberFormatInfo).GetProperties(BindingFlags.Instance | BindingFlags.Public);
      bool hasOneMatch = false;

      foreach (var ci in cultures) {
         bool match = true;     
         // Get the NumberFormatInfo for a specific culture.
         NumberFormatInfo specificNfi = ci.NumberFormat;
         // Compare the property values of the two.
         foreach (var prop in properties) {
            // We're not interested in the value of IsReadOnly.     
            if (prop.Name == "IsReadOnly") continue;

            // For arrays, iterate the individual elements to see if they are the same.
            if (prop.PropertyType.IsArray) { 
               IList nList = (IList) prop.GetValue(nfi, null);
               IList sList = (IList) prop.GetValue(specificNfi, null);
               if (nList.Count != sList.Count) {
                  match = false;
                  break;
               } 

               for (int ctr = 0; ctr < nList.Count; ctr++) {
                  if (! nList[ctr].Equals(sList[ctr])) {
                     match = false;
                     break;
                  }     
               }
            }   
            else if (! prop.GetValue(specificNfi).Equals(prop.GetValue(nfi))) {
               match = false;
               break;   
            }        
         }
         if (match) {
            Console.WriteLine("NumberFormatInfo object for '{0}' matches '{1}'", 
                                      name, ci.Name);
            hasOneMatch = true;
         }                                       
      }
      if (! hasOneMatch)
         Console.WriteLine("NumberFormatInfo object for '{0}' --> No Match", name);            

      Console.WriteLine();
   }
}

I dati specifici delle impostazioni cultura per la formattazione di valori numerici forniti dal NumberFormatInfo è dinamica, come culturali dati forniti dalla classe di CultureInfo (classe). Non si deve fare supposizioni sulla stabilità di valori per NumberFormatInfo gli oggetti che sono associati con particolare CultureInfo oggetti. Solo i dati forniti da essa associati e le impostazioni cultura invarianti NumberFormatInfo oggetto è stabile. Altri dati possono cambiare tra le sessioni dell'applicazione, o anche all'interno di una singola sessione, per i motivi seguenti:

  • Aggiornamenti del sistema. Le preferenze culturali, ad esempio il simbolo di valuta o i formati di valuta cambiano nel tempo. In questo caso, Windows Update include modifiche per il NumberFormatInfo valore della proprietà per una determinata lingua.

  • Lingue di sostituzione. La CultureAndRegionInfoBuilder classe può essere utilizzata per sostituire i dati di una lingua esistente.

  • Propagazione delle modifiche ai valori delle proprietà. Un numero di proprietà relative alla lingua è possibile modificare in fase di esecuzione, di conseguenza, NumberFormatInfo la modifica dei dati. Ad esempio, le impostazioni cultura correnti può essere modificata a livello di codice o tramite un'azione utente. In questo caso, il NumberFormatInfo oggetto restituito dalla CurrentInfo proprietà cambia in un oggetto associato alle impostazioni cultura correnti.

  • Preferenze dell'utente. Gli utenti dell'applicazione potrebbero eseguire l'override di alcuni valori associati con le impostazioni cultura correnti del sistema tramite le opzioni di paese e lingua nel Pannello di controllo. Ad esempio, gli utenti potrebbero scegliere un simbolo di valuta diverso o un simbolo di separatore decimale diverso. Se il CultureInfo.UseUserOverride è impostata su true (valore predefinito), le proprietà del NumberFormatInfo oggetto vengono recuperati anche dalle impostazioni dell'utente.

A partire da .NET Framework 2.0, tutte le proprietà sottoponibili a override dall'utente di un NumberFormatInfo oggetto vengono inizializzate quando viene creato l'oggetto. È ancora presente la possibilità di incoerenza, poiché né la creazione di oggetti né il processo di sostituzione dell'utente è atomico e i valori pertinenti possono cambiare durante la creazione dell'oggetto. Tuttavia, queste incoerenze dovrebbero essere molto raramente.

È possibile controllare se l'utente esegue l'override vengono riflesse nella NumberFormatInfo gli oggetti che rappresentano le stesse impostazioni cultura come impostazioni cultura del thread corrente. Nella tabella seguente sono elencati i modi in cui un NumberFormatInfo oggetto possono essere recuperato e indica se l'oggetto risultante riflette l'override dell'utente.

Origine dell'oggetto CultureInfo e NumberFormatInfo

Riflette l'override dell'utente

Proprietà CultureInfo.CurrentCulture.NumberFormat

Proprietà NumberFormatInfo.CurrentInfo

Metodo CultureInfo.CreateSpecificCulture

Metodo CultureInfo.GetCultureInfo

No

Costruttore CultureInfo(String)

Costruttore CultureInfo.CultureInfo(String, Boolean)

Dipende dal valore useUserOverride parametro

A meno che non esista un motivo per eseguire in caso contrario, si devono rispettare override dell'utente quando si utilizza il NumberFormatInfo oggetto nelle applicazioni client per formattare e analizzare l'input dell'utente o per visualizzare i dati numerici. Per le applicazioni server o applicazioni automatiche, si devono rispettare non override dell'utente. Tuttavia, se si utilizza il NumberFormatInfo sia dell'oggetto in modo esplicito o implicito per rendere persistenti i dati numerici in formato stringa, è necessario utilizzare un NumberFormatInfo che riflette le convenzioni di formattazione di impostazioni cultura invarianti, oppure è necessario specificare una stringa di formato numerico personalizzate utilizzate indipendentemente dalle impostazioni cultura.

Oggetto NumberFormatInfo oggetto viene utilizzato in modo implicito o esplicito in operazioni di formattazione numerica tutti. Tra le chiamate ai metodi seguenti:

Apportare tutte le operazioni di formattazione numeriche utilizzano un IFormatProvider implementazione. Il IFormatProvider interfaccia include un singolo metodo, GetFormat(Type). Si tratta di un metodo di callback che viene passato un Type oggetto che rappresenta il tipo necessario per fornire informazioni di formattazione. Il metodo è responsabile della restituzione di un'istanza di quel tipo o null, se non può fornire un'istanza del tipo. .NET Framework fornisce due IFormatProvider implementazioni per la formattazione dei numeri:

  • La CultureInfo classe, che rappresenta determinate impostazioni cultura (o una lingua specifica in un paese specifico). In un'operazione di formattazione numerica di CultureInfo.GetFormat metodo restituisce il NumberFormatInfo associato relativo CultureInfo.NumberFormat proprietà.

  • La NumberFormatInfo classe che fornisce informazioni sulle convenzioni di formattazione, le impostazioni cultura associato. Il NumberFormatInfo.GetFormat metodo restituisce un'istanza di se stesso.

Se un IFormatProvider implementazione non viene fornita a un metodo di formattazione in modo esplicito, un CultureInfo oggetto restituito dalla CultureInfo.CurrentCulture proprietà che rappresenta impostazioni cultura del thread corrente viene utilizzata.

Nell'esempio seguente viene illustrata la relazione tra il IFormatProvider interfaccia e la NumberFormatInfo classe nelle operazioni di formattazione definendo una classe personalizzata IFormatProvider implementazione. Il GetFormat metodo visualizza il nome del tipo dell'oggetto richiesto dall'operazione di formattazione. Se l'interfaccia richiede un NumberFormatInfo dell'oggetto, questo metodo fornisce il NumberFormatInfo oggetto per impostazioni cultura del thread corrente. Come illustrato nell'esempio, l'output di Decimal.ToString(IFormatProvider) metodo richieste un NumberFormatInfo oggetto da fornire informazioni di formattazione, mentre il String.Format(IFormatProvider, String, Object[]) richieste metodo NumberFormatInfo e DateTimeFormatInfo oggetti, nonché un ICustomFormatter implementazione.

using System;
using System.Globalization;

public class CurrentCultureFormatProvider : IFormatProvider
{
   public Object GetFormat(Type formatType) 
   {
      Console.WriteLine("Requesting an object of type {0}", 
                        formatType.Name);
      if (formatType == typeof(NumberFormatInfo))
         return NumberFormatInfo.CurrentInfo;
      else if (formatType == typeof(DateTimeFormatInfo))
         return DateTimeFormatInfo.CurrentInfo;
      else
         return null;
   }
}

public class Example
{
   public static void Main()
   {
      Decimal amount = 1203.541m;
      string value = amount.ToString("C2", new CurrentCultureFormatProvider());
      Console.WriteLine(value);
      Console.WriteLine();
      string composite = String.Format(new CurrentCultureFormatProvider(), 
                                       "Date: {0}   Amount: {1}   Description: {2}",
                                       DateTime.Now, 1264.03m, "Service Charge");
      Console.WriteLine(composite);
      Console.WriteLine();
   }
}
// The example displays output like the following:
//    Requesting an object of type NumberFormatInfo
//    $1,203.54
//    
//    Requesting an object of type ICustomFormatter
//    Requesting an object of type DateTimeFormatInfo
//    Requesting an object of type NumberFormatInfo
//    Date: 11/15/2012 2:00:01 PM   Amount: 1264.03   Description: Service Charge

Se un IFormatProvider implementazione non viene fornita in modo esplicito in una chiamata al metodo viene chiamato il metodo di formattazione numerica di CultureInfo.CurrentCulture.GetFormat metodo, che restituisce il NumberFormatInfo oggetto corrispondente alle impostazioni cultura del thread corrente.

Ogni operazione di formattazione standard o una stringa di formato numerico personalizzato viene utilizzato per produrre una stringa di risultato da un numero. In alcuni casi, l'utilizzo di una stringa di formato per produrre una stringa di risultato è explicit, come nell'esempio seguente. Questo codice chiama il Decimal.ToString(IFormatProvider) per convertire un Decimal valore a un numero di diverse rappresentazioni di stringa utilizzando le convenzioni di formattazione delle impostazioni cultura en-US.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formatStrings = { "C2", "E1", "F", "G3", "N", 
                                 "#,##0.000", "0,000,000,000.0##" };
      CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
      Decimal[] values = { 1345.6538m, 1921651.16m };

      foreach (var value in values) {
         foreach (var formatString in formatStrings) {
            string resultString = value.ToString(formatString, culture);
            Console.WriteLine("{0,-18} -->  {1}", formatString, resultString);
         }
         Console.WriteLine();      
      }   
   }
}
// The example displays the following output:
//       C2                 -->  $1,345.65
//       E1                 -->  1.3E+003
//       F                  -->  1345.65
//       G3                 -->  1.35E+03
//       N                  -->  1,345.65
//       #,##0.000          -->  1,345.654
//       0,000,000,000.0##  -->  0,000,001,345.654
//       
//       C2                 -->  $1,921,651.16
//       E1                 -->  1.9E+006
//       F                  -->  1921651.16
//       G3                 -->  1.92E+06
//       N                  -->  1,921,651.16
//       #,##0.000          -->  1,921,651.160
//       0,000,000,000.0##  -->  0,001,921,651.16

In altri casi, l'utilizzo di una stringa di formato è implicito. Ad esempio, nelle chiamate di metodo seguenti per il valore predefinito o senza parametri Decimal.ToString() (metodo), il valore di Decimal istanza viene formattata utilizzando l'identificatore di formato generale ("G") e le convenzioni delle impostazioni cultura correnti, ovvero in questo caso le impostazioni cultura en-US.

using System;

public class Example
{
   public static void Main()
   {
      Decimal[] values = { 1345.6538m, 1921651.16m };

      foreach (var value in values) {
         string resultString = value.ToString();
         Console.WriteLine(resultString);
         Console.WriteLine();      
      }   
   }
}
// The example displays the following output:
//       1345.6538
//       
//       1921651.16

Ogni stringa di formato numerico standard utilizza uno o più NumberFormatInfo le proprietà per determinare lo schema o i simboli utilizzati nella stringa di risultato. Ogni identificatore di formato numerico personalizzato in modo analogo, tranne "0" e "#" inserire simboli nella stringa di risultato che sono definiti da NumberFormatInfo proprietà. Nella tabella seguente sono elencati standard e identificatori di formato numerico personalizzati e i relativi NumberFormatInfo proprietà. Per modificare l'aspetto della stringa di risultato per una determinata lingua, vedere il proprietà NumberFormatInfo modifica sezione. Per informazioni dettagliate sull'utilizzo di questi identificatori di formato, vedere Stringhe di formato numerico standard e Stringhe di formato numerico personalizzato.

Identificatore di formato

Proprietà associate

"C" o "c" (identificatore di formato valuta)

CurrencyDecimalDigits, per definire il numero predefinito di cifre frazionarie.

CurrencyDecimalSeparator, per definire il simbolo di separatore decimale.

CurrencyGroupSeparator, per definire il gruppo o migliaia separatore.

CurrencyGroupSizes, per definire le dimensioni dei gruppi integrale.

CurrencyNegativePattern, per definire il modello di valori di valuta negativi.

CurrencyPositivePattern, per definire il modello di valori di valuta positivi.

CurrencySymbol, per definire il simbolo di valuta.

NegativeSign, per definire il simbolo di segno negativo.

"D" o "d" (identificatore di formato decimale)

NegativeSign, per definire il simbolo di segno negativo.

"E" o "e" (identificatore di formato esponenziale o scientifico)

NegativeSign, per definire il simbolo di segno negativo nella mantissa ed esponente.

NumberDecimalSeparator, per definire il simbolo di separatore decimale.

PositiveSign, per definire il simbolo di segno positivo nell'esponente.

"F" o "f" (identificatore di formato a virgola fissa)

NegativeSign, per definire il simbolo di segno negativo.

NumberDecimalDigits, per definire il numero predefinito di cifre frazionarie.

NumberDecimalSeparator, per definire il simbolo di separatore decimale.

"G" o "g" (identificatore di formato generale)

NegativeSign, per definire il simbolo di segno negativo.

NumberDecimalSeparator, per definire il simbolo di separatore decimale.

PositiveSign, per definire il simbolo di segno positivo per le stringhe di risultato in formato esponenziale.

"N" o "n" (identificatore di formato numerico)

NegativeSign, per definire il simbolo di segno negativo.

NumberDecimalDigits, per definire il numero predefinito di cifre frazionarie.

NumberDecimalSeparator, per definire il simbolo di separatore decimale.

NumberGroupSeparator, per definire il simbolo di separatore (migliaia) di gruppo.

NumberGroupSizes, per definire il numero di cifre integrali di un gruppo.

NumberNegativePattern, per definire il formato dei valori negativi.

"P" o "p" (identificatore di formato percentuale)

NegativeSign, per definire il simbolo di segno negativo.

PercentDecimalDigits, per definire il numero predefinito di cifre frazionarie.

PercentDecimalSeparator, per definire il simbolo di separatore decimale.

PercentGroupSeparator, per definire il simbolo di separatore di gruppo.

PercentGroupSizes, per definire il numero di cifre integrali di un gruppo.

PercentNegativePattern, per definire la posizione del simbolo di percentuale e del simbolo negativo per i valori negativi.

PercentPositivePattern, per definire la posizione del simbolo di percentuale per i valori positivi.

PercentSymbol, per definire il simbolo di percentuale.

"R" o "r" (identificatore di formato round trip)

NegativeSign, per definire il simbolo di segno negativo.

NumberDecimalSeparator, per definire il simbolo di separatore decimale.

PositiveSign, per definire il simbolo di segno positivo un esponente.

"X" o "x" (identificatore di formato esadecimale)

Nessuno.

"." (identificatore di formato personalizzato decimale)

NumberDecimalSeparator, per definire il simbolo di separatore decimale.

"," (identificatore di formato personalizzato separatore di gruppo)

NumberGroupSeparator, per definire il simbolo di separatore di gruppo (migliaia).

"%" (identificatore di formato personalizzato segnaposto di percentuale)

PercentSymbol, per definire il simbolo di percentuale.

"‰" (per ogni identificatore di formato personalizzato segnaposto mille)

PerMilleSymbol, per definire il simbolo di per mille.

"E" (identificatore di formato personalizzato notazione esponenziale)

NegativeSign, per definire il simbolo di segno negativo nella mantissa ed esponente.

PositiveSign, per definire il simbolo di segno positivo nell'esponente.

Si noti che la NumberFormatInfo classe include un NativeDigits proprietà che specifica le cifre in base 10 per impostazioni cultura specifiche. Tuttavia, la proprietà non viene utilizzata nelle operazioni di formattazione solo le cifre latine di base di 0 (U + 0030) a 9 (U + 0039) vengono utilizzati nella stringa di risultato. Inoltre, per Single e Double valori di NaN, PositiveInfinity, e NegativeInfinity, la stringa di risultato è costituito esclusivamente i simboli definiti per il NaNSymbol, PositiveInfinitySymbol, e NegativeInfinitySymbol proprietà, rispettivamente.

È possibile modificare le proprietà di un NumberFormatInfo per personalizzare la stringa di risultato prodotta in un'operazione di formattazione numerica. Per eseguire questa operazione:

  1. Creare una copia di lettura/scrittura di un NumberFormatInfo oggetto cui si desidera modificare le convenzioni di formattazione. Per ulteriori informazioni, vedere il creare un'istanza di un oggetto NumberFormatInfo sezione.

  2. Modificare le proprietà che vengono utilizzati per generare la stringa di risultato desiderato. Per informazioni sull'utilizzo di metodi come formattazione NumberFormatInfo proprietà per definire stringhe di risultati, vedere il formattare le stringhe e proprietà NumberFormatInfo sezione.

  3. Utilizzare l'oggetto personalizzato NumberFormatInfo dell'oggetto come il IFormatProvider argomento nelle chiamate ai metodi di formattazione.

System_CAPS_noteNota

Anziché modificare in modo dinamico i valori delle proprietà di una lingua ogni volta che viene avviata un'applicazione, è possibile utilizzare la CultureAndRegionInfoBuilder classe per definire le impostazioni cultura personalizzate (impostazioni cultura impostazioni cultura che ha un nome univoco e che integrano esistente) o impostazioni cultura di sostituzione (quello che viene utilizzato invece di una lingua specifica).

Nelle sezioni seguenti vengono forniscono alcuni esempi.

Nell'esempio seguente viene modificato un NumberFormatInfo dell'oggetto che rappresenta le convenzioni di formattazione delle impostazioni cultura en-US. Assegna il simbolo di valuta 4217 ISO di CurrencySymbol proprietà e definisce un criterio per i valori di valuta che è costituito il simbolo di valuta seguito da uno spazio e un valore numerico.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      // Retrieve a writable NumberFormatInfo object.
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      NumberFormatInfo nfi = enUS.NumberFormat;

      // Use the ISO currency symbol instead of the native currency symbol.
      nfi.CurrencySymbol =  (new RegionInfo(enUS.Name)).ISOCurrencySymbol;
      // Change the positive currency pattern to <code><space><value>.
      nfi.CurrencyPositivePattern = 2;
      // Change the negative currency pattern to <code><space><sign><value>.     
      nfi.CurrencyNegativePattern = 12;

      // Produce the result strings by calling ToString.
      Decimal[] values = { 1065.23m, 19.89m, -.03m, -175902.32m };
      foreach (var value in values)
         Console.WriteLine(value.ToString("C", enUS));

      Console.WriteLine();

      // Produce the result strings by calling a composite formatting method.
      foreach (var value in values)
         Console.WriteLine(String.Format(enUS, "{0:C}", value));      
   }
}
// The example displays the following output:
//       USD 1,065.23
//       USD 19.89
//       USD -0.03
//       USD -175,902.32
//       
//       USD 1,065.23
//       USD 19.89
//       USD -0.03
//       USD -175,902.32

Tutti i numeri di identificazione nazionali costituiti esclusivamente da cifre e pertanto possono essere facilmente formattati modificando le proprietà di un NumberFormatInfo oggetto. Ad esempio, un numero di previdenza sociale negli Stati Uniti è costituita da 9 cifre disposti come segue: XXX-XX-XXXX. Nell'esempio seguente si presuppone che i numeri di previdenza sociale vengono archiviati come integer, valori e li formatta in modo appropriato.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      // Instantiate a read-only NumberFormatInfo object.
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      NumberFormatInfo nfi = enUS.NumberFormat;

      // Modify the relevant properties.
      nfi.NumberGroupSeparator = "-";
      nfi.NumberGroupSizes = new int[] { 3, 2, 4};
      nfi.NumberDecimalDigits = 0;

      int[] ids = { 111223333, 999776666 };

      // Produce the result string by calling ToString.
      foreach (var id in ids)
         Console.WriteLine(id.ToString("N", enUS));

      Console.WriteLine();

      // Produce the result string using composite formatting.
      foreach (var id in ids)
         Console.WriteLine(String.Format(enUS, "{0:N}", id));
   }
}
// The example displays the following output:
//       1112-23-333
//       9997-76-666
//       
//       1112-23-333
//       9997-76-666

L'analisi consente di convertire la rappresentazione di stringa di un numero in un numero. Ogni tipo numerico in .NET Framework include due metodi di analisi in Overload: Parse e TryParse. Il Parse metodo converte una stringa in un numero e genera un'eccezione se la conversione non riesce. Il TryParse metodo converte una stringa in un numero, viene assegnato il numero da un out argomento e restituisce un Boolean valore che indica se la conversione è riuscita.

Utilizzano i metodi di analisi in modo implicito o esplicito un NumberStyles valore di enumerazione per determinare quali elementi di stile (come separatori di gruppi, un separatore decimale o un simbolo di valuta) possono essere presenti in una stringa se l'operazione di analisi abbia esito positivo. Se un NumberStyles valore non viene fornito nella chiamata al metodo, il valore predefinito è una NumberStyles valore che include il Float e AllowThousands flag che specifica che la stringa analizzata può includere i simboli di gruppo, un separatore decimale, un segno negativo e gli spazi vuoti oppure può essere la rappresentazione di stringa di un numero in notazione esponenziale.

Utilizzano i metodi di analisi in modo implicito o esplicito un NumberFormatInfo oggetto che definisce i simboli specifici e modelli che può verificarsi nella stringa da analizzare. Se un NumberFormatInfo oggetto non è specificato, il valore predefinito è il NumberFormatInfo per impostazioni cultura del thread corrente. Per ulteriori informazioni sull'analisi, vedere i singoli metodi di analisi, ad esempio Int16.Parse(String), Int32.Parse(String, NumberStyles), Int64.Parse(String, IFormatProvider), Decimal.Parse(String, NumberStyles, IFormatProvider), Double.TryParse(String, Double), e BigInteger.TryParse(String, NumberStyles, IFormatProvider, BigInteger).

Nell'esempio seguente illustra la natura dipendenti dalle impostazioni cultura di analisi di stringhe. Tenta di analizzare una stringa che includono migliaia separatori utilizzando le convenzioni di impostazioni cultura invarianti, en-US, fr-FR. Una stringa che include la virgola come separatore di gruppi e il punto come separatore decimale non è in grado di analizzare le impostazioni cultura fr-FR e una stringa con una virgola come separatore decimale e white space come un separatore di gruppo non può essere analizzata in en-US e impostazioni cultura invarianti.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      String[] values = { "1,034,562.91", "9 532 978,07" };
      String[] cultureNames = { "en-US", "fr-FR", "" };

      foreach (var value in values) {
         foreach (var cultureName in cultureNames) {
            CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
            String name = culture.Name == "" ? "Invariant" : culture.Name;
            try {
               Decimal amount = Decimal.Parse(value, culture);
               Console.WriteLine("'{0}' --> {1} ({2})", value, amount, name);
            }
            catch (FormatException) {
               Console.WriteLine("'{0}': FormatException ({1})",
                                 value, name);
            }   
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       '1,034,562.91' --> 1034562.91 (en-US)
//       '1,034,562.91': FormatException (fr-FR)
//       '1,034,562.91' --> 1034562.91 (Invariant)
//       
//       '9 532 978,07': FormatException (en-US)
//       '9 532 978,07' --> 9532978.07 (fr-FR)
//       '9 532 978,07': FormatException (Invariant)

L'analisi in genere si verifica in due contesti:

  • Come operazione che è in grado di convertire l'input dell'utente in un valore numerico.

  • Come operazione che consente di andata e ritorno di un valore numerico. ovvero, per deserializzare un valore numerico che in precedenza è stato serializzato come stringa.

Le sezioni seguenti illustrano queste due operazioni in modo più dettagliato.

Quando si sta analizzando l'input di stringhe numeriche dall'utente, è consigliabile creare sempre un NumberFormatInfo che riflette le impostazioni relative alla lingua dell'utente. Per informazioni su come creare un'istanza di un NumberFormatInfo oggetto che rifletta le personalizzazioni dell'utente, vedere il NumberFormatInfo e dynamic data sezione.

Nell'esempio seguente viene illustrata la differenza tra un'operazione di analisi che riflette le impostazioni cultura utente e una che non. In questo caso, la lingua predefinita è en-US, ma l'utente ha definito "," come separatore dei decimali e "." come separatore di gruppo nel Pannello di controllo paese e lingua. In genere, questi simboli vengono invertiti nelle impostazioni cultura en-US predefinito. Quando l'utente immette una stringa che riflette le impostazioni utente e la stringa viene analizzata da un NumberFormatInfo che riflette le impostazioni utente (sostituzioni), l'operazione di analisi restituisce un risultato corretto. Tuttavia, quando la stringa viene analizzata da un NumberFormatInfo che riflette le impostazioni cultura en-US standard, è il simbolo da virgole per un separatore di gruppi di errori e restituisce un risultato errato.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo stdCulture = CultureInfo.GetCultureInfo("en-US");
      CultureInfo custCulture = CultureInfo.CreateSpecificCulture("en-US"); 

      String value = "310,16";
      try {
         Console.WriteLine("{0} culture reflects user overrides: {1}", 
                           stdCulture.Name, stdCulture.UseUserOverride);
         Decimal amount = Decimal.Parse(value, stdCulture);
         Console.WriteLine("'{0}' --> {1}", value, amount.ToString(CultureInfo.InvariantCulture));                                                                                        
      }
      catch (FormatException) {
         Console.WriteLine("Unable to parse '{0}'", value);
      }    
      Console.WriteLine();

      try {
         Console.WriteLine("{0} culture reflects user overrides: {1}", 
                           custCulture.Name, custCulture.UseUserOverride);
         Decimal amount = Decimal.Parse(value, custCulture);
         Console.WriteLine("'{0}' --> {1}", value, amount.ToString(CultureInfo.InvariantCulture));                                                                                        
      }
      catch (FormatException) {
         Console.WriteLine("Unable to parse '{0}'", value);
      }   
   }
}
// The example displays the following output:
//       en-US culture reflects user overrides: False
//       '310,16' --> 31016
//       
//       en-US culture reflects user overrides: True
//       '310,16' --> 310.16

Quando i dati numerici vengano serializzati in formato stringa e successivamente deserializzati e analizzati, le stringhe dovrebbero essere generate e analizzate utilizzando le convenzioni delle impostazioni cultura invarianti. Le operazioni di formattazione e analisi non rifletteranno mai le convenzioni delle impostazioni cultura specifiche. Se vengono utilizzate le impostazioni specifiche delle impostazioni cultura, la portabilità dei dati è rigorosamente limitata; può essere deserializzato solo in un thread in cui le impostazioni specifiche delle impostazioni cultura sono identiche a quelle del thread su cui è stato serializzato. In alcuni casi, ciò significa che i dati non possono anche essere deserializzato nello stesso sistema in cui è stato serializzato.

Nell'esempio seguente viene illustrato cosa può accadere quando viene violato questo principio. Valori a virgola mobile in una matrice vengono convertiti in stringhe quando il thread corrente utilizza le impostazioni specifiche delle impostazioni cultura delle impostazioni cultura en-US. I dati viene quindi analizzati da un thread che utilizza le impostazioni specifiche delle impostazioni cultura delle impostazioni cultura en-GB. In questo caso, anche se ogni operazione di analisi ha esito positivo, i dati non round trip correttamente e si verifica un danneggiamento dei dati. In altri casi, potrebbe non riuscire un'operazione di analisi e un FormatException può essere generata l'eccezione.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Threading;

public class Example
{
   public static void Main()
   {
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
      PersistData();

      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
      RestoreData();
   }

   private static void PersistData()
   {
      // Define an array of floating-point values.
      Double[] values = { 160325.972, 8631.16, 1.304e5, 98017554.385, 
                          8.5938287084321676e94 };
      Console.WriteLine("Original values: ");
      foreach (var value in values) 
         Console.WriteLine(value.ToString("R", CultureInfo.InvariantCulture));

      // Serialize an array of doubles to a file 
      StreamWriter sw = new StreamWriter(@".\NumericData.bin");
      for (int ctr = 0; ctr < values.Length; ctr++) {
         sw.Write(values[ctr].ToString("R"));
         if (ctr < values.Length - 1) sw.Write("|");
      }
      sw.Close();
      Console.WriteLine();
   }

   private static void RestoreData()
   {   
      // Deserialize the data
      StreamReader sr = new StreamReader(@".\NumericData.bin");
      String data = sr.ReadToEnd();
      sr.Close();

      String[] stringValues = data.Split('|');
      List<Double> newValueList = new List<Double>();

      foreach (var stringValue in stringValues) {
         try {
            newValueList.Add(Double.Parse(stringValue));
         }
         catch (FormatException) {
            newValueList.Add(Double.NaN);
         }   
      }                                   

      Console.WriteLine("Restored values:");
      foreach (var newValue in newValueList) 
         Console.WriteLine(newValue.ToString("R", NumberFormatInfo.InvariantInfo));
   }
}
// The example displays the following output:
//       Original values:
//       160325.972
//       8631.16
//       130400
//       98017554.385
//       8.5938287084321671E+94
//       
//       Restored values:
//       160325972
//       863116
//       130400
//       98017554385
//       8.5938287084321666E+110

Nell'esempio seguente viene illustrato come recuperare un NumberFormatInfo oggetto per un oggetto corrispondente CultureInfo dell'oggetto e utilizzare l'oggetto recuperato al numero di query informazioni sulla formattazione per determinate impostazioni cultura.

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

public sealed class App 
{
    static void Main() 
    {
        StringBuilder sb = new StringBuilder();

        // Loop through all the specific cultures known to the CLR.
        foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) 
        {
            // Only show the currency symbols for cultures that speak English.
            if (ci.TwoLetterISOLanguageName != "en") continue;

            // Display the culture name and currency symbol.
            NumberFormatInfo nfi = ci.NumberFormat;
            sb.AppendFormat("The currency symbol for '{0}' is '{1}'",
                ci.DisplayName, nfi.CurrencySymbol);
            sb.AppendLine();
        }
        Console.WriteLine(sb.ToString());
    }
}

// This code produces the following output.
//
// The currency symbol for 'English (United States)' is '$'
// The currency symbol for 'English (United Kingdom)' is '�'
// The currency symbol for 'English (Australia)' is '$'
// The currency symbol for 'English (Canada)' is '$'
// The currency symbol for 'English (New Zealand)' is '$'
// The currency symbol for 'English (Ireland)' is '?'
// The currency symbol for 'English (South Africa)' is 'R'
// The currency symbol for 'English (Jamaica)' is 'J$'
// The currency symbol for 'English (Caribbean)' is '$'
// The currency symbol for 'English (Belize)' is 'BZ$'
// The currency symbol for 'English (Trinidad and Tobago)' is 'TT$'
// The currency symbol for 'English (Zimbabwe)' is 'Z$'
// The currency symbol for 'English (Republic of the Philippines)' is 'Php'

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: