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))

Voir aussi