If, opérateur
Mise à jour : novembre 2007
Utilise l'évaluation de court-circuit pour retourner conditionnellement l'une de deux valeurs. L'opérateur If peut être appelé avec trois arguments ou avec deux arguments.
If( [argument1,] argument2, argument3 )
Opérateur If appelé avec trois arguments
Lorsque l'opérateur If est appelé à l'aide de trois arguments, le premier argument doit être évalué à une valeur pouvant être castée en tant que Boolean. Cette valeur Boolean détermine lequel des deux autres arguments est évalué et retourné. La liste qui suit s'applique uniquement lorsque l'opérateur If est appelé en utilisant trois arguments.
Éléments
argument1
Obligatoire. Boolean. Détermine lequel des autres arguments doit être évalué et retourné.argument2
Obligatoire. Object. Évalué et retourné si argument1 est évalué à True.argument3
Obligatoire. Object. Évalué et retourné si argument1 est évalué à False.
Un opérateur If appelé avec trois travaux d'arguments agit comme une fonction IIf, à cette exception près qu'il utilise l'évaluation de court-circuit. Une fonction IIf évalue toujours les trois arguments, alors qu'un opérateur If qui a trois arguments n'en évalue que deux. 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 l'opérateur 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 d'évaluation de court-circuit. L'exemple affiche deux tentatives de diviser la variable number par la variable divisor, sauf lorsque le divisor est nul. Dans ce cas, une valeur 0 doit être retournée, et aucune tentative ne doit être faite pour effectuer la division, puisqu'une erreur d'exécution en résulterait. L'expression If utilisant l'évaluation de court-circuit, elle évalue soit le deuxième soit le troisième argument, en fonction de la valeur du premier argument. Si le premier argument est vrai, le diviseur n'est pas nul : l'évaluation du deuxième argument et la division peuvent se faire en toute sécurité. Si le premier argument est faux, seul le troisième argument est évalué et un 0 est retourné. Par conséquent, lorsque le diviseur est 0, aucune tentative n'est faite pour effectuer la division et aucune erreur n'en résulte. Toutefois, l'expression IIf n'utilisant pas l'évaluation de court-circuit, le deuxième argument est évalué même lorsque le premier argument est faux. Le résultat est une erreur de division par zéro à 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 runtime 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é en n'utilisant que deux arguments. La liste qui suit s'applique uniquement lorsque l'opérateur If est appelé avec deux arguments.
Éléments
argument2
Obligatoire. Object. Doit être une référence ou un type nullable. Évalué et retourné lorsqu'il s'évalue à une valeur quelle qu'elle soit, différente de Nothing.argument3
Obligatoire. Object. Évalué et retourné si argument2 est évalué à Nothing.
Lorsque l'argument Boolean est omis, le premier argument doit être une référence ou un type nullable. Si le premier argument s'évalue à 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 comment cette évaluation fonctionne.
' 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))