valor - string nullable c#
Linq2Sql: ¿HasValue y!=Null funcionan igual para los tipos anulables? (1)
¿Hay alguna razón por la que debería elegir uno de estos sobre el otro? ¿O realmente no importa?
var a = data.Cars.Where(ø => ø.LicensePlate != null);
var b = data.Cars.Where(ø => ø.LicensePlate.HasValue);
He usado != null
antes, pero comencé a pensar que quizás debería cambiar, ya que HasValue tipo de lee mejor. ¿Qué piensan ustedes? ¿Hay alguna diferencia en absoluto? ¿Aparte de un personaje extra? Cualquier diferencia de rendimiento? Diferencias Sql?
No, ambas declaraciones son las mismas y debe elegir la que le resulte más legible.
Algo interesante a tener en cuenta es que el compilador reemplazará null
comparaciones null
en un Nullable<T>
con una llamada a HasValue
. En otras palabras, esto:
class Program
{
static void Main()
{
int? i = 0;
Console.WriteLine(i != null);
Console.WriteLine(i.HasValue);
}
}
se compila a esto:
private static void Main()
{
int? i = 0;
Console.WriteLine(i.HasValue);
Console.WriteLine(i.HasValue);
}