サーチ…


IF ... Then ... Else

Dim count As Integer = 0
Dim message As String

If count = 0 Then
    message = "There are no items."
ElseIf count = 1 Then
    message = "There is 1 item."
Else
    message = "There are " & count & " items."
End If

オペレータの場合

9.0
If(condition > value, "True", "False")

If ... Then ... Else..End If文の代わりにIf演算子を使用できます。

次の例を考えてみましょう。

If 10 > 9 Then
     MsgBox("True")
Else
     MsgBox("False")
End If

〜と同じです

MsgBox(If(10 > 9, "True", "False"))

If()短絡評価を使用しているIf() 、それは使用する引数だけを評価することを意味します。条件が偽(またはある場合はNullableではありませんNothing )、最初の選択肢は全く評価されないだろう、とその副作用はいずれも観察されません。これは、 condition?a:bの形式でC#の三項演算子と実質的に同じcondition?a:b

これは例外を避けるのに特に便利です:

Dim z As Integer = If(x = 0, 0, y/x)

ゼロで割ると例外がスローされることはわかっていますが、ここでIf()は条件がすでに保証している式だけに短絡することでこれを守ります。

もう一つの例:

Dim varDate as DateTime = If(varString <> "N/A", Convert.ToDateTime(varString), Now.Date)

varString <> "N/A"Falseに評価された場合、最初の式を評価せずに、 varDateの値をNow.Dateとして割り当てます。

9.0

VBの古いバージョンにはIf()演算子がなく、 IIf()組み込み関数で行う必要があります。オペレータではなく関数なので、短絡しませ 。パフォーマンスのペナルティ、状態の変更、例外のスローなど、すべての可能な副作用とともにすべての式が評価されます。 (に変換する場合に例外を避ける上記の例の両方がスローなるIIf 。)これらの副作用のいずれかの問題を提示する場合は、条件付きのインラインを使用する方法はありません。代わりに、 If..Thenブロックを通常通り使用します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow