2012-04-12 8 views
7

Sto convertendo un nullable integer in un string e il Resharper mi avvisa di utilizzare InvariantCulture.Come si converte un notificatore int in una stringa che sarà sicura per i computer in diverse impostazioni internazionali?

shipment.ShipmentID.ToString() 

Un rapido Alt-Invio, Enter tardi, mi dà questo:

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture) 

Purtroppo, ReSharper non è soddisfatto, e suggerisce la stessa cosa, il che non ha senso me.

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture, 
           CultureInfo.InvariantCulture) 

ToString() sul int nullable non costruire, dandomi un errore che indica Nessun metodo di overload 'ToString' dura 1 argomenti.

Gli input non nulli si comportano diversamente.

int requiredInt = 3; 
// no Resharper or compiler warning 
var stringFromRequiredInt = requiredInt.ToString(CultureInfo.InvariantCulture); 

Cosa devo fare per convertire un nullable int ad un string che sarà sicuro per i computer in diversi locali?

+3

Cosa succede quando si utilizza shipment.ShipmentID.Value? Con i tipi nullable, di solito controllo per null usando il valore booleano .HasValue e poi uso il valore .Value. –

risposta

12

Nullable<T> non ha un sovraccarico di ToString() con argomenti; ReSharper non sta gestendo la situazione correttamente.

Dal default(Nullable<int>).ToString() rendimenti string.Empty, è possibile effettuare ReSharper felice come questo:

shipment.ShipmentID.HasValue 
     ? shipment.ShipmentID.Value.ToString(CultureInfo.InvariantCulture) : "" 

alternativa:

shipment.ShipmentID != null 
     ? ((int)shipment.ShipmentID).ToString(CultureInfo.InvariantCulture) : "" 
1

Controllare questo link.

è necessario utilizzare la cultura invariante solo per i processi che richiedono risultati indipendenti dalla cultura, come i servizi di sistema. In altri casi, produce risultati che potrebbero essere linguisticamente scorretti o culturalmente inappropriati.

UPDATE: Così uno degli scopi principali da usare potrebbe essere per esempio 'se' confronto delle istruzioni.

Problemi correlati