Dalam Perl (dan bahasa lain), operator ternary kondisional dapat diekspresikan seperti ini:
my $foo = $bar == $buz ? $cat : $dog;
Apakah ada operator serupa di VB.NET?
vb.net
operators
conditional-operator
short-circuiting
Jim Counts
sumber
sumber
Jawaban:
Tergantung pada versi. The
If
operator dalam VB.NET 2008 merupakan operator ternary (serta operator perpaduan null). Ini baru saja diperkenalkan, sebelum 2008 ini tidak tersedia. Berikut beberapa info lebih lanjut: Visual Basic If pengumumanContoh:
[EDIT]
Sebelum 2008 itu
IIf
, yang bekerja hampir identik denganIf
operator yang dijelaskan di atas.Contoh:
sumber
Iif
selalu mengembalikan objek tipeObject
, sedangkanIf(bool, obj, obj)
memungkinkan untuk memeriksa tipe dengan opsi ketat. (Dim var As Integer = Iif(true, 1, 2)
tidak akan mengkompilasi dengan opsi ketat karena Anda bisa dengan mudah menulisDim var As Integer = Iif(true, new Object(), new Object())
. Anda BISA menulisDim var As Integer = If(true, 1, 2)
dengan opsi ketat pada, karena itu akan memeriksa jenis yang dikembalikan.)iif selalu tersedia di VB, bahkan di VB6.
Ini bukan operator sejati, karena itu, tetapi sebuah fungsi dalam namespace Microsoft.Visual.
sumber
If () adalah padanan terdekat tapi waspadalah terhadap konversi implisit yang terjadi jika Anda telah menyetel "Option Strict off"
Misalnya, jika Anda tidak hati-hati, Anda mungkin tergoda untuk mencoba sesuatu seperti:
Akan memberi "foo" nilai 0!
Saya pikir '?' operator yang setara dalam C # malah akan gagal kompilasi
sumber
Dim foo As Integer? = If( someTrueExpression, New Integer?, 2)
.Option Strict On
. Alasannya adalah bahwaNothing
dalam VB.NET setara dengan C #default(T)
daripadanull
.Integer?
itu berarti nullable - lihat stackoverflow.com/questions/3628757/make-an-integer-nullCType(Nothing, DateTime?
).