Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menggunakan evaluasi sirkuit pendek untuk mengembalikan salah satu dari dua nilai secara kondisional. Operator If
dapat dipanggil dengan tiga argumen atau dengan dua argumen.
Sintaks
If( [argument1,] argument2, argument3 )
Operator If dipanggil dengan tiga argumen
Ketika If
dipanggil dengan menggunakan tiga argumen, argumen pertama harus dievaluasi ke nilai yang dapat ditransmisikan sebagai Boolean
. Nilai Boolean
tersebut akan menentukan dua argumen lain mana yang dievaluasi dan dikembalikan. Daftar berikut ini hanya berlaku saat operator If
dipanggil dengan menggunakan tiga argumen.
Generator
Term | Definisi |
---|---|
argument1 |
Harus diisi. Boolean . Menentukan argumen mana yang harus dievaluasi dan dikembalikan. |
argument2 |
Harus diisi. Object . Dievaluasi dan dikembalikan jika argument1 dievaluasi ke True . |
argument3 |
Harus diisi. Object . Dievaluasi dan dikembalikan jika argument1 mengevaluasi ke False atau jika argument1 adalah variabel NullableBoolean yang mengevaluasi ke Tidak Ada. |
Operator If
yang dipanggil dengan tiga argumen berfungsi seperti fungsi IIf
kecuali menggunakan evaluasi sirkuit pendek. Fungsi IIf
selalu mengevaluasi ketiga argumennya, sedangkan operator If
yang memiliki tiga argumen hanya mengevaluasi dua di antaranya. Argumen If
pertama dievaluasi dan hasilnya dilemparkan sebagai nilai Boolean
, True
atau False
. Jika nilainya adalah True
, argument2
dievaluasi dan nilainya dikembalikan, tetapi argument3
tidak dievaluasi. Jika nilai ekspresi Boolean
adalah False
, argument3
dievaluasi dan nilainya dikembalikan, tetapi argument2
tidak dievaluasi. Contoh berikut mengilustrasikan penggunaan If
saat tiga argumen digunakan:
' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))
' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))
Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
Contoh berikut menggambarkan nilai evaluasi sirkuit pendek. Contoh menunjukkan dua upaya untuk membagi variabel number
menurut variabel divisor
kecuali ketika divisor
adalah nol. Dalam hal ini, 0 harus dikembalikan, dan tidak ada upaya yang harus dilakukan untuk melakukan pembagian karena kesalahan run-time akan dihasilkan. Karena ekspresi If
menggunakan evaluasi sirkuit pendek, ekspresi mengevaluasi argumen kedua atau ketiga, tergantung pada nilai argumen pertama. Jika argumen pertama benar, pembagi bukan nol dan aman untuk mengevaluasi argumen kedua dan melakukan pembagian. Jika argumen pertama salah, hanya argumen ketiga yang dievaluasi dan 0 dikembalikan. Oleh karena itu, ketika pembagi adalah 0, tidak ada upaya yang dilakukan untuk melakukan pembagian dan tidak ada hasil kesalahan. Namun, karena IIf
tidak menggunakan evaluasi sirkuit pendek, argumen kedua dievaluasi bahkan ketika argumen pertama salah. Ini menyebabkan kesalahan divide-by-zero run-time.
number = 12
' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
Jika operator dipanggil dengan dua argumen
Argumen pertama hingga If
dapat dihilangkan. Hal ini memungkinkan operator untuk dipanggil dengan hanya menggunakan dua argumen. Daftar berikut ini hanya berlaku saat operator If
dipanggil dengan dua argumen.
Generator
Term | Definisi |
---|---|
argument2 |
Harus diisi. Object . Harus berupa referensi atau jenis nilai yang dapat diubah ke null. Dievaluasi dan dikembalikan ketika dievaluasi ke apa pun selain Nothing . |
argument3 |
Harus diisi. Object . Dievaluasi dan dikembalikan jika argument2 dievaluasi ke Nothing . |
Ketika argumen Boolean
dihilangkan, argumen pertama harus berupa tipe nilai referensi atau dapat diubah ke null. Jika argumen pertama mengevaluasi ke Nothing
, nilai argumen kedua dikembalikan. Dalam semua kasus lain, nilai argumen pertama dikembalikan. Contoh berikut menggambarkan cara kerja evaluasi ini:
' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6
' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))
second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))
first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))