Visual Basic .NET Language
条件
サーチ…
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