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

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

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

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

377
demandé sur Stephen Kennedy 2009-02-23 06:17:30

3 réponses

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

Exemple:

Dim foo as String = If(bar = buz, cat, dog)
506
répondu Beep beep 2018-07-26 10:52:15

Iif a toujours été disponible dans VB, même dans 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 dans Microsoft.Espace de noms VisualBasic.

71
répondu Kris Erickson 2009-02-23 04:25:19

If () est l'équivalent le plus proche mais méfiez-vous 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 à la place de la compilation

19
répondu unnknown 2012-08-16 19:55:31