Pregunta

¿Alguien tiene alguna preferencia sobre cómo comprobar si un valor es DBNull?Descubrí que estas dos declaraciones me dan los resultados que quiero, pero me pregunto si hay una preferencia.

if (any is System.DBNull)

igual que:

if (any == System.DBNull.Value)

¡Gracias!

¿Fue útil?

Solución

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

Prefiero ese, simplemente porque lo leo como una comparación de valores, no de tipos.

Otros consejos

tiendo a usar

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

o

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

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

yo suelo value is DBNull. Suena bien y, como desarrollador paranoico, no puedo confiar en que el único valor que existe sea DBNull.Value.Los errores ocurren.

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

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

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

Este es un buen ejemplo de cómo la forma sigue a la función.Cualquiera que se ejecute de manera más eficiente es el camino a seguir.Su aspecto, su lectura o los malos nombres que le ponga son irrelevantes.Utilice el idioma de manera eficiente, no lo moldee para convertirlo en uno nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top