Nuestros programadores estrellas agotaron sus depósitos de café, en su búsqueda diariamente por la resolución, hasta que Abram halló la contestación en Gitea así que en este momento la compartimos con nosotros.
Solución:
static string NullToString( object Value )
Value == DBNull.Value ? "" : (string)Value;
Cuando obtiene un valor NULL de una base de datos, el valor devuelto es DBNull.Value en cuyo caso, simplemente puede llamar .ToString()
y volverá ""
Ejemplo:
reader["Column"].ToString()
te atrapa ""
si el valor devuelto es DBNull.Value
Si el escenario no es siempre una base de datos, optaría por un método de extensión:
public static class Extensions
public static string EmptyIfNull(this object value)
if (value == null)
return "";
return value.ToString();
Uso:
string someVar = null;
someVar.EmptyIfNull();
Convert.ToString(object)
se convierte en string. Si el objeto es null
, Convert.ToString
lo convierte en un vacío string.
Vocación .ToString()
sobre un objeto con null valor arroja un System.NullReferenceException
.
EDITAR:
Dos excepciones a las reglas:
1) ConvertToString(string)
en un null string siempre volveré null.
2) ToString(Nullable
en un null el valor devolverá “” .
Ejemplo de código:
// 1) Objects:
object obj = null;
//string valX1 = obj.ToString(); // throws System.NullReferenceException !!!
string val1 = Convert.ToString(obj);
Console.WriteLine(val1 == ""); // True
Console.WriteLine(val1 == null); // False
// 2) Strings
String str = null;
//string valX2 = str.ToString(); // throws System.NullReferenceException !!!
string val2 = Convert.ToString(str);
Console.WriteLine(val2 == ""); // False
Console.WriteLine(val2 == null); // True
// 3) Nullable types:
long? num = null;
string val3 = num.ToString(); // ok, no error
Console.WriteLine(num == null); // True
Console.WriteLine(val3 == ""); // True
Console.WriteLine(val3 == null); // False
val3 = Convert.ToString(num);
Console.WriteLine(num == null); // True
Console.WriteLine(val3 == ""); // True
Console.WriteLine(val3 == null); // False
Reseñas y valoraciones del post
Si te sientes suscitado, eres capaz de dejar un artículo acerca de qué le añadirías a esta crónica.