int?
es el azúcar de sintaxis que simplifica la declaración de la variable anulable. Es lo mismo que Nullable<int>
.
Entonces, si echa un vistazo a la implementación del ToString()
método para Nullable<T>
(ver más abajo) , puede notar que devuelve una cadena vacía en caso de que no tenga valor.
public struct Nullable<T> where T : struct
{
public override string ToString()
{
if (!this.hasValue)
return "";
return this.value.ToString();
}
}
Lo que dice MSDN:
Método Nullable.ToString
Devuelve la representación de texto del valor del objeto actual Nullable si la propiedad HasValue es verdadera, o una cadena vacía ("") si la propiedad HasValue es falsa.
Entonces, el siguiente código imprimirá una cadena vacía en la consola en lugar de lanzar una ArgumentNullException
excepción.
static void Main(string[] args)
{
int? a = null;
Console.WriteLine(a.ToString()); // Prints empty string to console.
}