2013-04-11 5 views
1

Je me demandais si quelqu'un pouvait me prêter son expertise. Assez nouveau sur Vb.net et a rencontré cette déclaration conditionnelle dans l'un de nos produits. Est-ce que quelqu'un pourrait confirmer la validité de la déclaration et expliquer ce qui se passe ici? J'ai essayé de nombreuses recherches, mais je ne trouve rien de lié.VB.net Étrange déclaration conditionnelle (IF)

If (IsDBNull(dr("someID")), "0", dr("someID")) = someID.ToString() Then 

J'ai changé les noms de valeur « id » comme il est le code d'un produit commercial, mais l'ID est utilisé étaient tous les mêmes variables (ints).

Merci pour toute contribution que vous pouvez offrir à ce sujet!

Joe

PS: La raison pour laquelle je ne peux pas vérifier au moment de l'exécution est en raison de la façon dont le produit fonctionne.

Répondre

2

Il est une ligne Si la déclaration If(condition,iftrue,iffalse) si condition est vrai et le retour iftrue évaluer les autres iffalse

+0

Doh! * Facepalm * Merci mon pote, ça m'a sauvé un gros gâchis! – Broseph

1

Le If operator en VB.NET 2008 agit comme un ternary operator [REFERENCE]

. Exemple:

Dim foo as String = If(bar = buz, cat, dog) 'Condition satisfied then it'll return cat else dog. 
1

L'instruction vérifie si le dr("SomeID") est égal à la valeur someID.ToString. La raison pour laquelle le If est requis est parce que vous devez vérifier si le dr("someID") est Null. Si c'est 0 est utilisé à la place qui probablement ne devrait pas être égal à someID.

Il est la même chose que faire ce qui suit:

If Not IsDBNull(dr("someID")) Then 
    If dr("someID").ToString = someID.ToString Then 

    End If 
End If 

Je dirais que quelque chose comme cela serait plus approprié (vérification des valeurs entières au lieu de comparer les chaînes)

If(IsDBNull(dr("someID")), 0, CInt(dr("someID"))) = someID Then 

Je voudrais aussi suggérer Tourner Option Strict On car le code que vous avez posté ne devrait pas compiler!