web-dev-qa-db-fra.com

Existe-t-il un opérateur ternaire conditionnel dans VB.NET?

En Perl (et d'autres langues), un opérateur ternaire conditionnel peut être exprimé comme suit:

my $foo = $bar == $buz ? $cat : $dog;

Existe-t-il un opérateur similaire dans VB.NET?

418
Jim Counts

Dépend de la version. L'opérateur If de VB.NET 2008 est un opérateur ternaire (ainsi qu'un opérateur de coalescence nul). Cela vient d'être introduit, avant 2008, ce n'était pas disponible. Voici quelques informations supplémentaires: Visual Basic si annonce

Exemple:

Dim foo as String = If(bar = buz, cat, dog)

[MODIFIER]

Avant 2008, c'était "IIf", qui fonctionnait presque de la même manière que l'opérateur If décrit ci-dessus.

Exemple:

Dim foo as String = IIf(bar = buz, cat, dog)
562
Beep beep

iif a toujours été disponible en VB, même en VB6.

Dim foo as String = iif(bar = buz, cat, dog)

Ce n'est pas un véritable opérateur en tant que tel, mais une fonction de l'espace de noms Microsoft.VisualBasic.

74
Kris Erickson

Si () est l'équivalent le plus proche, mais attention des conversions implicites en cours si vous avez défini "Option Strict off".

Par exemple, si vous ne faites pas attention, vous pourriez être tenté d'essayer quelque chose comme:

Dim foo As Integer? = If( someTrueExpression, Nothing, 2)

Donnera à "foo" une valeur de 0!

Je pense que le '?' L'opérateur équivalent en C # échouerait plutôt à la compilation

24
unnknown