2012-04-12 19 views
7

Estoy convirtiendo un nullable integer en un string, y Resharper me advierte que use InvariantCulture.¿Cómo convierto un int nullable a una cadena que será segura para las computadoras en diferentes configuraciones regionales?

shipment.ShipmentID.ToString() 

Una rápida Alt-Enter, Intro después, me da esto:

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture) 

Desafortunadamente, ReSharper no se cumple, y sugiere lo mismo, lo que no tiene sentido yo.

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

ToString() en el int anulable no va a construir, y me da un error que indica Ningún método de sobrecarga 'ToString' tarda 1 argumentos.

Los ints no anulables se comportan de manera diferente.

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

¿Qué debo hacer para convertir un nullable int a un string que sea seguro para computadoras en diferentes lugares?

+3

¿Qué ocurre cuando se utiliza shipment.ShipmentID.Value? Con los tipos que aceptan nulos, generalmente comprobo nulo usando el valor booleano .HasValue y luego uso el valor .Value. –

Respuesta

12

Nullable<T> no tiene una sobrecarga de ToString() con argumentos; ReSharper no está manejando la situación adecuadamente.

Desde default(Nullable<int>).ToString() vuelve string.Empty, puede hacer ReSharper feliz así:

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

alternativa:

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

Compruebe esto link.

debe utilizar el cultivo invariante solo para los procesos que requieren resultados independientes del cultivo, como los servicios del sistema. En otros casos, produce resultados que pueden ser lingüísticamente incorrectos o culturalmente inapropiados.

ACTUALIZACIÓN: Así que uno de los propósitos principales de usar que puede ser, por ejemplo, comparación de declaraciones 'if'.

Cuestiones relacionadas