(any == System.DBNull.Value) vs (any est System.DBNull)
Question
Quelqu'un a-t-il une préférence sur la manière de vérifier si une valeur est DBNull
? J'ai trouvé que ces deux affirmations me donnaient les résultats souhaités, mais je me demandais simplement s'il y avait une préférence?
si (l'un est System.DBNull)
identique à:
if (any == System.DBNull.Value)
Merci!
La solution
if (any == System.DBNull.Value) ...
Je préfère celui-là, simplement parce que je le lis comme une comparaison de valeurs, pas de types.
Autres conseils
J'ai tendance à utiliser
if (DBNull.Value.Equals(value)) {
//
}
ou
if (Convert.IsDBNull(value)) {
//
}
est
n'utilise pas de réflexion comme le dit Kevlar623. Il correspond à l'opération isinst
dans IL. À ce niveau, comparer les performances est carrément ridicule, à moins que vous ne travailliez sur un système de guidage de missile.
J'utilise : DBNull
. . Cela semble juste et en tant que développeur paranoïaque, je ne peux pas croire que la seule valeur qui existe est DBNull. .Valeur
. Des bugs surviennent.
si vous êtes en c #, vous devriez utiliser ==
; is
utilise la réflexion, ce qui coûte plus cher à calculer, d'autant plus qu'il n'y a qu'une seule instance de System.DBNull
.
J'aime bien le "is is System.DBNull". plus parce que je déteste l’idée de comparer quelque chose à NULL et de l’avoir vrai. De nombreuses autres syntaxes (qu'est-ce que le pluriel de cela?) Auraient n'importe quoi == NULL renvoie NULL.
Je comprends qu'il existe DBNull.Value pour une raison. Je connais. Je liste ma préférence:)
Ceci est un bon exemple de forme suit la fonction. Celui qui exécute plus efficacement est la voie à suivre. Ce à quoi cela ressemble, ce qui se lit ou les mauvais noms qu’il vous appelle n’est pas pertinent. Utilisez la langue efficacement, ne la façonnez pas en une nouvelle.