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.
Sintaksis
If( [argument1,] argument2, argument3 )
Jika operator dipanggil dengan tiga argumen
Ketika If dipanggil dengan menggunakan tiga argumen, argumen pertama harus dievaluasi ke nilai yang dapat ditransmisikan sebagai Boolean. Nilai tersebut Boolean akan menentukan dua argumen lain mana yang dievaluasi dan dikembalikan. Daftar berikut ini hanya berlaku ketika operator dipanggil If dengan menggunakan tiga argumen.
Bagian
| Istilah | Definisi |
|---|---|
argument1 |
Dibutuhkan.
Boolean. Menentukan argumen mana yang akan dievaluasi dan dikembalikan. |
argument2 |
Dibutuhkan.
Object. Dievaluasi dan dikembalikan jika argument1 dievaluasi ke True. |
argument3 |
Dibutuhkan.
Object. Dievaluasi dan dikembalikan jika argument1 dievaluasi ke False atau jika argument1 adalah variabel NullableBoolean yang mengevaluasi ke Tidak Ada. |
Operator If yang dipanggil dengan tiga argumen berfungsi seperti IIf fungsi kecuali menggunakan evaluasi sirkuit pendek. Fungsi IIf selalu mengevaluasi ketiga argumennya, sedangkan If operator yang memiliki tiga argumen hanya mengevaluasi dua di antaranya. Argumen pertama If dievaluasi dan hasilnya dilemparkan sebagai Boolean nilai, True atau False. Jika nilainya adalah True, argument2 dievaluasi dan nilainya dikembalikan, tetapi argument3 tidak dievaluasi. Jika nilai Boolean ekspresi 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 mengilustrasikan nilai evaluasi sirkuit pendek. Contoh menunjukkan dua upaya untuk membagi variabel number menurut variabel divisor kecuali ketika divisor nol. Dalam hal ini, 0 harus dikembalikan, dan tidak ada upaya yang harus dilakukan untuk melakukan pembagian karena kesalahan run-time akan dihasilkan.
If Karena ekspresi menggunakan evaluasi sirkuit pendek, ekspresi mengevaluasi argumen kedua atau ketiga, tergantung pada nilai argumen pertama. Jika argumen pertama benar, pembavis 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 pembavis 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 yang If dapat dihilangkan. Ini memungkinkan operator untuk dipanggil dengan hanya menggunakan dua argumen. Daftar berikut ini hanya berlaku ketika operator dipanggil If dengan dua argumen.
Bagian
| Istilah | Definisi |
|---|---|
argument2 |
Dibutuhkan.
Object. Harus berupa tipe nilai referensi atau nullable. Dievaluasi dan dikembalikan ketika dievaluasi ke apa pun selain Nothing. |
argument3 |
Dibutuhkan.
Object. Dievaluasi dan dikembalikan jika argument2 dievaluasi ke Nothing. |
Ketika argumen dihilangkan Boolean , argumen pertama harus berupa tipe nilai referensi atau nullable. Jika argumen pertama dievaluasi 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))