If, opérateur (Visual Basic)
Utilise l’évaluation de court-circuit pour retourner de manière conditionnelle l’une des deux valeurs. L’opérateur If
peut être appelé avec trois arguments ou avec deux arguments.
Syntaxe
If( [argument1,] argument2, argument3 )
Opérateur If appelé avec trois arguments
Quand If
est appelé à l’aide de trois arguments, le premier argument doit être évalué à une valeur qui peut être convertie en Boolean
. Cette valeur Boolean
détermine lequel des deux autres arguments est évalué et retourné. La liste suivante s’applique uniquement lorsque l’opérateur If
est appelé à l’aide de trois arguments.
Éléments
Terme | Définition |
---|---|
argument1 |
Obligatoire. Boolean . Détermine les autres arguments à évaluer et à retourner. |
argument2 |
Obligatoire. Object . Évalué et retourné si argument1 prend la valeur True . |
argument3 |
Obligatoire. Object . Évalués et retournés si argument1 prend la valeur False ou si argument1 est une variable NullableBoolean qui prend la valeur Nothing. |
Un opérateur If
appelé avec trois arguments fonctionne comme une fonction IIf
, sauf qu’il utilise l’évaluation de court-circuit. Une fonction IIf
évalue toujours les trois de ses arguments, tandis qu’un opérateur If
qui a trois arguments n’évalue que deux d’entre eux. Le premier argument If
est évalué et le résultat est casté en tant que valeur Boolean
, True
ou False
. Si la valeur est True
, argument2
est évalué et sa valeur est retournée, mais argument3
n’est pas évalué. Si la valeur de l’expression Boolean
est False
, argument3
est évalué et sa valeur est retournée, mais argument2
n’est pas évalué. Les exemples suivants illustrent l’utilisation de If
lorsque trois arguments sont utilisés :
' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))
' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))
Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
L’exemple suivant illustre la valeur de l’évaluation de court-circuit. L’exemple montre deux tentatives de division de la variable number
par la variable divisor
, sauf quand divisor
est égal à zéro. Dans ce cas, une valeur 0 doit être retournée et aucune tentative ne doit être effectuée pour effectuer la division, car une erreur d’exécution en résulterait. Étant donné que l’expression If
utilise l’évaluation de court-circuit, elle évalue le deuxième ou le troisième argument, en fonction de la valeur du premier argument. Si le premier argument est true, le diviseur n’est pas égal à zéro et il est sûr d’évaluer le deuxième argument et d’effectuer la division. Si le premier argument est false, seul le troisième argument est évalué et un 0 est retourné. Par conséquent, lorsque le diviseur est 0, aucune tentative n’est effectuée pour effectuer la division ni aucun résultat d’erreur. Toutefois, étant donné que IIf
n’utilise pas l’évaluation de court-circuit, le deuxième argument est évalué même lorsque le premier argument est false. Cela provoque une erreur de division par zéro au moment de l’exécution.
number = 12
' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
Opérateur If appelé avec deux arguments
Le premier argument à If
peut être omis. Cela permet à l’opérateur d’être appelé à l’aide de deux arguments uniquement. La liste suivante s’applique uniquement lorsque l’opérateur If
est appelé avec deux arguments.
Éléments
Terme | Définition |
---|---|
argument2 |
Obligatoire. Object . Doit être un type référence ou valeur nullable. Évalué et retourné lorsqu’il est évalué à autre chose que Nothing . |
argument3 |
Obligatoire. Object . Évalué et retourné si argument2 prend la valeur Nothing . |
Lorsque l’argument Boolean
est omis, le premier argument doit être un type référence ou une valeur pouvant accepter la valeur Null. Si le premier argument prend la valeur Nothing
, la valeur du deuxième argument est retournée. Dans tous les autres cas, la valeur du premier argument est retournée. L’exemple suivant illustre le fonctionnement de cette évaluation :
' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6
' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))
second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))
first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))