In Perl (e altre lingue) un operatore ternario condizionale può essere espresso in questo modo:Esiste un operatore ternario condizionale in VB.NET?
my $foo = $bar == $buz ? $cat : $dog;
Esiste un operatore simile in VB.NET?
In Perl (e altre lingue) un operatore ternario condizionale può essere espresso in questo modo:Esiste un operatore ternario condizionale in VB.NET?
my $foo = $bar == $buz ? $cat : $dog;
Esiste un operatore simile in VB.NET?
Depends. L'operatore If
in VB.NET 2008 funge da operatore ternario. Questo è stato appena introdotto, prima del 2008 non era disponibile. Ecco qualche informazione in più: Visual Basic If announcement
Esempio:
Dim foo as String = If(bar = buz, cat, dog)
Prima del 2008 era IIf, che funzionava in modo quasi identico all'operatore If descritto nel link. – Zooba
... con l'importante differenza che Iif(), essendo una funzione, ha sempre valutato sia il conseguente sia l'alternativa, mentre il nuovo Se ne valuta solo uno. –
cosa significa? Se (condizione, parte vera, parte falsa). posso rito? – kbvishnu
IIF è sempre stata disponibile in VB, anche in VB6.
Dim foo as String = iif(bar = buz, cat, dog)
Non è un vero e proprio operatore, in quanto tale, ma una funzione nello spazio dei nomi Microsoft.VisualBasic.
Ifif è comunque vicino ad un operatore ternario - il che significa non è possibile utilizzarlo in tutte le condizioni in cui si eseguirà un If Then Else (o operatore ternario). Ad esempio, Valore = Iif (1 = 1, 0, 1/0) esploderebbe, ma Valore = If (1 = 1, 0, 1/0) non ... –
VB non supporta la valutazione del cortocircuito (eccetto per l'operatore AndAlso), quindi i programmatori VB non si aspettano davvero di poter valutare in sicurezza una mezza operazione. Ma considerato, anche iif è una funzione di hacking che è stata messa in retrocompatibilità altrimenti sarebbe un vero operatore. –
Bello catalogare tutti i programmatori VB ;-) E ISNot e OrElse sono anche scorciatoie, quindi VB supporta effettivamente la valutazione del cortocircuito. – HardCode
Se() è l'equivalente più ma attenti di conversioni implicite in corso se è stato impostato "Option Strict off"
Ad esempio, se il tuo non attento si può essere tentati di provare qualcosa di simile:
Dim foo As Integer? = If(someTrueExpression, Nothing, 2)
darà "pippo" un valore di 0!
Penso che il '?' operatore equivalente in C# sarebbe invece fallire la compilazione
Solo per completezza, il modo migliore per scrivere quell'espressione è 'Dim foo As Integer? = If (someTrueExpression, New Integer ?, 2) '. –
Si noti che questo si verifica anche con 'Option Strict On'. Il motivo è che 'Nothing' in VB.NET è equivalente a' default (T) 'di C# piuttosto che a' null'. – Heinzi
E per chiunque sconcertato da 'Integer?' Significa che è annullabile - vedi http://stackoverflow.com/questions/3628757/make-an-integer-null –
utilizzare questa linea,
foo=IIf(bar=buz,cat,dog)
Questo non è un operatore ternario condizionale.È una funzione che si comporta allo stesso modo in determinate circostanze –
Se ([argomento1,] argument2, argument3) Quando Se viene chiamato utilizzando tre argomenti, il primo argomento deve restituire un valore che può essere lanciato come booleano. Questo valore booleano determinerà quale degli altri due argomenti viene valutato e restituito. Il seguente elenco si applica solo quando l'operatore If viene chiamato utilizzando tre argomenti.
Non penso che questo risponda alla domanda originale, ma è certamente quello che stavo cercando quando ho trovato questa pagina!
https://msdn.microsoft.com/en-us/library/z2wkh0tk(v=vs.90).aspx#Anchor_1
VB 2010 e il supporto anche questa espressione:
test? expression1: espressione2
esempio:
var now = new Date(); var greeting = "Buono" + ((now.getHours()> 17)? "evening.": "giorno.");
controllo MSDN documentazione qui: https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.100).aspx
C#, non VB. – dwilliss
È possibile utilizzare questo esempio:
Dim MyResult As String = If(MyString = MyCondition, "trueValue", "falseValue")
Una risposta inutile che non aggiunge nulla alle soluzioni già stabilite, aggiunse anni tardi nella speranza di ottenere un rappresentante. –
Un operatore ternario è un operatore che prende tre operandi, molto simile a un operatore binario in due e un operatore unario ne prende uno. L'operatore?: è un esempio specifico di un operatore ternay, non la definizione – Zooba
Sì, grazie ma questa informazione non è di aiuto –
Ecco perché è un commento, piuttosto che una risposta. Ho commentato che c'era un risposta corretta identificando IIf che sembra essere scomparso ora. – Zooba