[Tips] Formatear variables nullables
Hace un par de dias un amigo me hizo una consulta al paso, "Sabes bien como se formatea un decimal nullable?". La verdad es que me molestó no tener la respuesta y me sorprendió que él tampoco lo supiera y que me consultara a mi en vez de googlear!.
Claro, por ser nullable no tiene el método ToString(), así que vamos a compartir las dos soluciones encontradas que, aunque muchos pueden conocerlas, muchos no.
La clase genérica Nullable<T> posee dos método:
public T GetValueOrDefault()
{
return this.value;
}
y,
public T GetValueOrDefault(T defaultValue)
{
if (!this.HasValue)
{
return defaultValue;
}
return this.value;
}
También contamos con el operador ?? como sigue:
(decimalNullable ?? 0).ToString("$ 0###.####");
El siguiente segmento de código muestra lasformas de hacer lo mismo:
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
decimal? decimalNullable = null;
string formated;
formated = decimalNullable.GetValueOrDefault().ToString("$ 0###.####");
formated = decimalNullable.GetValueOrDefault(0).ToString("$ 0###.####");
formated = (decimalNullable ?? 0).ToString("$ 0###.####");
// Esta linea lanza una exception InvalidOperationException
formated = decimalNullable.Value.ToString("$ 0###.####");
}
}
}
Lucas Ontivero