Pergunta

Alguém tem uma preferência sobre como verificar se um valor é DBNull? Descobri que essas duas declarações me dão os resultados que quero, mas apenas me perguntando se há uma preferência?

if (any is System.DBNull)

igual a:

if (any == System.DBNull.Value)

Obrigado!

Foi útil?

Solução

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

Eu prefiro isso, simplesmente porque li isso como comparação de valores, não tipos.

Outras dicas

Eu costumo usar

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

ou

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

is Não usa a reflexão, como diz Kevlar623. Ele mapeia para o isinst Operação em IL. Nesse nível, comparar o desempenho é absolutamente bobo, a menos que você esteja trabalhando em um sistema de orientação de mísseis.

eu uso value is DBNull. Parece certo e, como um desenvolvedor paranóico, não posso confiar que o único valor já existente seja DBNull.Value. Bugs acontecem.

Se você estiver em C#, deve usar ==; is usa a reflexão que é mais cara para calcular, especialmente porque há apenas uma instância de System.DBNull.

Eu gosto do "Is System.dbnull" mais porque odeio a idéia de comparar algo com NULL e fazê -lo ser verdadeiro. Muitas outras sintaxes (o que diabos é o plural disso?) Teria alguma coisa == NULL Return null.

Eu entendo que há dbnull.value por um motivo. Eu sei. Estou listando minha preferência :)

Este é um bom exemplo de forma segue a função. Qualquer que seja executado com mais eficiência, é o caminho a percorrer. O que parece, se diz ou nomes ruins que você chama é irrelevante. Use o idioma com eficiência, não molde o idioma em um novo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top