Bagikan melalui


Operator If (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.

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

Lihat juga