Recherche…


SI ... Alors ... Sinon

Dim count As Integer = 0
Dim message As String

If count = 0 Then
    message = "There are no items."
ElseIf count = 1 Then
    message = "There is 1 item."
Else
    message = "There are " & count & " items."
End If

Si opérateur

9.0
If(condition > value, "True", "False")

Nous pouvons utiliser l'opérateur If au lieu de If ... Then ... Else..End If bloque les instructions.

Prenons l'exemple suivant:

If 10 > 9 Then
     MsgBox("True")
Else
     MsgBox("False")
End If

est le même que

MsgBox(If(10 > 9, "True", "False"))

If() utilise l'évaluation de court-circuit , ce qui signifie qu'il n'évaluera que les arguments qu'il utilise. Si la condition est fausse (ou Nullable qui est Nothing ), la première alternative ne sera pas évaluée du tout et aucun de ses effets secondaires ne sera observé. Ceci est effectivement le même que l' opérateur ternaire de C # sous la forme de condition?a:b .

Ceci est particulièrement utile pour éviter les exceptions:

Dim z As Integer = If(x = 0, 0, y/x)

Nous savons tous que la division par zéro lancera une exception, mais If() protège contre cela en court-circuitant uniquement l'expression que la condition a déjà assurée est valide.

Un autre exemple:

Dim varDate as DateTime = If(varString <> "N/A", Convert.ToDateTime(varString), Now.Date)

Si varString <> "N/A" évalue à False , il attribuera varDate valeur de comme Now.Date sans évaluer la première expression.

9.0

Les anciennes versions de VB n'ont pas l'opérateur If() et doivent se débrouiller avec la fonction IIf() . Comme il est une fonction, pas un opérateur, il ne court-circuit; toutes les expressions sont évaluées, avec tous les effets secondaires possibles, y compris les pénalités de performance, le changement d'état et les exceptions de lancement. (Les deux exemples ci-dessus qui évitent les exceptions seraient IIf s'ils étaient convertis en IIf .) Si l'un de ces effets secondaires présente un problème, il est impossible d'utiliser un conditionnel en ligne. au lieu de cela, compter sur If..Then bloque comme d'habitude.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow