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 ArgumentNullExceptionexcepción.
static void Main(string[] args)
{
int? a = null;
Console.WriteLine(a.ToString()); // Prints empty string to console.
}