Domanda

Qualcuno ha una preferenza su come verificare se un valore è DBNull ? Ho trovato queste due affermazioni che mi danno i risultati che desidero, ma mi chiedo solo se c'è una preferenza?

if (any is System.DBNull)

uguale a:

if (any == System.DBNull.Value)

Grazie!

È stato utile?

Soluzione

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

Preferisco quello, semplicemente perché l'ho letto come un confronto di valori, non di tipi.

Altri suggerimenti

Tendo a usare

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

o

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

è non usa la riflessione come dice Kevlar623. Si associa all'operazione isinst in IL. A quel livello, confrontare le prestazioni è decisamente stupido, a meno che tu non stia lavorando a un sistema di guida missilistico.

Uso il valore è DBNull . Sembra giusto e come sviluppatore paranoico, non posso fidarmi che l'unico valore mai esistito sia DBNull .value . I bug accadono.

se sei in c #, dovresti usare == ; is utilizza la riflessione che è più costosa da calcolare, soprattutto perché esiste sempre un'istanza di System.DBNull .

Mi piace il " è System.DBNull " più perché odio l'idea di confrontare qualcosa con NULL e vederlo vero. Molte altre sintassi (che diavolo è il plurale di questo?) Avrebbero qualcosa == NULL restituire NULL.

Capisco che c'è DBNull.Value per un motivo. Lo so. Sto elencando la mia PREFERENZA :)

Questo è un buon esempio di forma segue la funzione. Qualunque sia l'esecuzione più efficiente è la strada da percorrere. Ciò che sembra, legge o brutti nomi che ti chiama è irrilevante. Usa la lingua in modo efficiente, non modellarla in una nuova.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top