¿Cuál es la diferencia entre Nullable<T>.HasValue o Nullable<T> != null?
Siempre lo usé Nullable<>.HasValue
porque me gustaba la semántica. Sin embargo, recientemente estuve trabajando en el código base existente de otra persona, donde lo usaron Nullable<> != null
exclusivamente.
¿Hay alguna razón para utilizar uno sobre el otro o es pura preferencia?
int? a; if (a.HasValue) // ...
vs.
int? b; if (b != null) // ...
Aceptado
El compilador reemplaza null
las comparaciones con una llamada a HasValue
, por lo que no existe una diferencia real. Simplemente haga lo que sea más legible/tenga más sentido para usted y sus colegas.
Prefiero (a != null)
que la sintaxis coincida con los tipos de referencia.