Apakah ada VB.NET yang setara untuk ??
operator C # ?
vb.net
operators
null-coalescing-operator
Nathan Koop
sumber
sumber
Jawaban:
Gunakan
If()
operator dengan dua argumen ( dokumentasi Microsoft ):sumber
If()
pernyataan dalam VB sama denganif...?...:
di C #, bukan??
operator??
(lihat jawaban lain untuk pertanyaan ini: stackoverflow.com/a/20686360/1474939 )If
dengan tiga parameter . Itu tidak mirip dengan??
operator C # . Jawaban yang lebih baik adalah Kode Maverick Jika dengan dua argumen . (Nick memiliki jawaban yang sama, bertahun-tahun sebelumnya, tetapi tidak termasuk penjelasan dari MSDN.)The
IF()
Operator harus melakukan trik untuk Anda:http://visualstudiomagazine.com/listings/list.aspx?id=252
sumber
Jawaban yang diterima tidak memiliki penjelasan apa pun dan hanya berupa tautan.
Oleh karena itu, saya pikir saya akan meninggalkan jawaban yang menjelaskan cara kerja
If
operator diambil dari MSDN:Jika Operator (Visual Basic)
Jika Operator Dipanggil dengan Dua Argumen
Bagian
VB
Contoh cara menangani lebih dari dua nilai (bersarang
if
):sumber
Anda dapat menggunakan metode ekstensi. Yang ini bekerja seperti SQL
COALESCE
dan mungkin berlebihan untuk apa yang Anda coba untuk menguji, tetapi berhasil.Built-in
If(nullable, secondChoice)
hanya dapat menangani dua pilihan yang dapat dibatalkan. Di sini, satuCoalesce
parameter dapat sebanyak yang diinginkan. Yang bukan-nol pertama akan dikembalikan, dan parameter lainnya tidak dievaluasi setelah itu (dihubung pendek, sepertiAndAlso
/&&
danOrElse
/||
)sumber
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
:-)Satu batasan signifikan dari sebagian besar solusi ini adalah mereka tidak akan mengalami hubungan pendek. Karena itu mereka sebenarnya tidak setara dengan
??
.Built-in
If
Operator tidak akan mengevaluasi parameter berikutnya kecuali mengevaluasi parameter sebelumnya untuk apa-apa.Pernyataan berikut ini setara:
C #
VB
Ini akan berfungsi dalam semua kasus di mana
??
bekerja. Salah satu solusi lain harus digunakan dengan sangat hati-hati, karena mereka dapat dengan mudah memperkenalkan bug run-time.sumber
Periksa dokumentasi Microsoft tentang If Operator (Visual Basic) di sini: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
Berikut adalah beberapa contoh (VB.Net)
sumber