operators - Esiste un operatore ternario condizionale in VB.NET?




conditional-operator short-circuiting (4)

If () è l'equivalente più vicino ma fai attenzione alle conversioni implicite in corso se hai impostato "Option Strict off"

Ad esempio, se non stai attento, potresti essere tentato di provare qualcosa del tipo:

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

Darà "pippo" un valore di 0!

Penso che la '?' l'equivalente dell'operatore in C # avrebbe invece fallito la compilazione

In Perl (e in altre lingue) un operatore ternario condizionale può essere espresso in questo modo:

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

Esiste un operatore simile in VB.NET?


Dipende dalla versione. L'operatore If in VB.NET 2008 è un operatore ternario (oltre a un operatore null coalescenza). Questo è stato appena introdotto, prima del 2008 non era disponibile. Ecco alcune ulteriori informazioni: Visual Basic Se annuncio

Esempio:

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

iif è sempre stato disponibile in VB, anche in VB6.

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

Non è un vero operatore, in quanto tale, ma una funzione nello spazio dei nomi Microsoft.VisualBasic.


È equivalente a

while (x-- > 0)

x-- (post decremento) è equivalente a x = x-1 quindi, il codice si trasforma in:

while(x > 0) {
    x = x-1;
    // logic
}




vb.net operators conditional-operator short-circuiting