(any == System.DBNull.Value) vs (any is System.DBNull)
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!
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.