how .net null dbnull

.net - how - (any== System.DBNull.Value) vs(cualquiera es System.DBNull)



dbnull c# (6)

¿ DBNull tiene preferencia sobre cómo verificar si un valor es DBNull ? He encontrado que estas dos afirmaciones me dan los resultados que quiero, pero me pregunto si hay alguna preferencia.

if (any is System.DBNull)

igual que:

if (any == System.DBNull.Value)

¡Gracias!


Este es un buen ejemplo de la forma sigue a la función. Cualquiera que se ejecute de manera más eficiente es el camino a seguir. Lo que parece, lee o los nombres incorrectos que llama es irrelevante. Use el lenguaje de manera eficiente, no modifique el idioma en uno nuevo.


Me gusta más el "es System.DBNull" porque odio la idea de comparar algo con NULL y que sea cierto. Muchas otras sintaxis (¿qué demonios es el plural de eso?) Tendrían cualquier cosa == NULL devolver NULL.

Entiendo que hay DBNull.Value por una razón. Lo sé. Estoy enumerando mi PREFERENCIA :)


Tiendo a usar

if (DBNull.Value.Equals(value)) { // }

o

if (Convert.IsDBNull(value)) { // }


no usa el reflejo como dice Kevlar623. Se asigna a la operación isinst en IL. En ese nivel, comparar el rendimiento es francamente tonto, a menos que estés trabajando en un sistema de orientación de misiles.

Yo uso value is DBNull . Simplemente suena bien y, como desarrollador paranoico, no puedo confiar en que el único valor que existe sea DBNull.Value . Los errores suceden


si estás en c #, debes usar == ; is usa la reflexión que es más costosa de calcular, especialmente porque solo hay una instancia de System.DBNull .


if (any == System.DBNull.Value) ...

Yo prefiero esa, simplemente porque la leo comparando valores, no tipos.