Bagikan melalui


Jika Operator (Visual Basic)

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))

Lihat juga