Ifステートメント
Ifステートメントの構文
Ifステートメントは条件式で記述された条件が成り立っているかどうかを判断し、実行する処理を分岐させるための構文です。 Ifステートメントの構文の形式は次の通りです。 [ ]
でくくった部分は省略することが可能な箇所です。
このようにIf ... Then
とEnd If
の間の部分に条件式が成り立っている場合に実行するステートメントを記述します。 ElseIf ... Then
は最初のIf
、またはひとつ前のElseIf
の条件式が成り立っていない場合に判定する条件文および実行するステートメントを記述するためのものです。 Else
は他のどの条件文も成り立っていない場合に実行するステートメントを記述するためのものです。
If ... Then
およびIf ... Then ... Else
は、次のように条件式と実行するステートメントを1行で記述することもできます。 この場合、End If
は不要です。
Ifステートメントの例
以下の例はIfステートメントを使って、変数に格納されている値によって実行する処理を変える例です。
条件式と演算子
条件式で数値の比較を行うには、=
, <>
, <=
などの比較演算子を使います。
文字列の比較にも=
や<>
などの演算子が使える他、Stringクラスの検索・比較メソッドを使うこともできます。
オブジェクト同士やヌル参照の比較を行う場合にはIsやTypeOfなどを使って条件式を記述します。
各演算子やメソッドの詳細については各ページを参照してください。
条件式の結合
条件式を結合するにはAndAlso
演算子およびOrElse
演算子を用います。 条件「XかつY」はX AndAlso Y
、「XまたはY」はX OrElse Y
と記述します。 また、条件の否定にはNot
演算子を用います。 条件「Xではない」はNot X
と記述します。
なお、AndAlso演算子・OrElse演算子はショートサーキットによる評価を行います。
論理演算子の詳細については論理演算子を参照してください。
複数の条件式
IfステートメントではElseIfにより条件式を複数記述することができます。
一方、上記の例のように多数の条件で場合分けをする場合はSelectステートメントを使うこともできます。
SelectステートメントについてはSelect Caseステートメントを参照してください。
入れ子
Ifステートメントの中にIfステートメントを記述する、つまりIfステートメントを入れ子にすることにより、ある条件が成り立っている場合にさらに追加の条件で分岐を行うようにすることもできます。
入れ子のIfステートメントは複数の条件をAND結合したものと同じなので、AndAlso演算子を使って1つのIfステートメントで記述することができます。 例えば、次の二つのIfステートメントはどちらも同じ動作となります。
If演算子
VB.NET 2008(Visual Studio 2008)からはCやC#の三項演算子~?~:~
と同様の機能を持つIf演算子がサポートされるようになりました。 この演算子を使うことにより、条件分岐と値の代入を1行で行うことができるようになります。
If演算子について詳しくは論理演算子 §.If演算子で解説しています。
#Ifディレクティブ
VB.NETには条件付きのコンパイルを行うための#Ifディレクティブというものがあります。 Ifステートメントと似ていますが、機能はまったく異なります。 Ifステートメントは実行時の条件分岐を行うためのものですが、#Ifディレクティブはコンパイル時の条件分岐を行うためのものです。 次の例は、#Ifディレクティブを使った例です。
#Ifディレクティブについて詳しくはコンパイラ定数と条件付きの呼び出しを参照してください。