Modifier: Juste pour être clair, je ne pose pas de questions sur (Null
vs DBNull.Value
) ou (IsDBNull
vs IsNull
).IsDBNull vs DBNull.Value, sont-ils identiques?
Eh bien, je l'utilise toujours IsDBNull()
pour évaluer les champs de base de données et vérifier si la valeur est DBNull
, mais je remarque que dans de nombreux exemples de code, les gens utilisent DBNull.Value
dans le même but. Voici comment:
If IsDBNull(obj) Then DoSomething() ' ---> My approach
If obj = DBNull.Value Then DoSomething() ' ---> Theirs.
également en C#:
if (obj == DBNull.Value) {DoSomething();}
Je l'ai fait une recherche pour savoir si elles sont les mêmes ou s'il y a une différence entre eux, mais ne peut pas trouver des articles utiles que montrent ces deux approches d'évaluation particulières ensemble.
This MSDN link montre comment DBNull.Value.Equals
fait la même chose que IsDBNull
fonction, mais ne mentionne jamais/suggère d'utiliser DBNull.Value
pour l'évaluation, sans l'utilisation de la fonction Equals
. Donc, je me demande vraiment, y a-t-il une différence réelle entre ces deux pour que l'un d'eux soit recommandé par rapport à l'autre? Ou font-ils exactement la même chose?
Cette deuxième ligne devrait utiliser 'Is' plutôt que' = 'mais, à part cela, ils sont fonctionnellement équivalents. Cette méthode 'IsDBNull' utilise probablement cette seconde méthode en interne. – jmcilhinney
[Voici l'implémentation .Net.] (Https://github.com/Microsoft/referencesource/blob/master/System.Data/System/Data/SqlClient/SqlDataReader.cs#L2917) –
@WillRay, c'est-à-dire implémentation de la méthode 'SqlDataReader.IsDBNull', qui n'est pas celle spécifiée dans la question. La méthode dans le code ci-dessus est 'Microsoft.VisualBasic.Information.IsDBNull'. – jmcilhinney