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!

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top