#If...Then...#Else ディレクティブ

選択された Visual Basic コード ブロックを条件付きでコンパイルします。

構文

#If expression Then
   statements
[ #ElseIf expression Then
   [ statements ]
...
#ElseIf expression Then
   [ statements ] ]
[ #Else
   [ statements ] ]
#End If

指定項目

expression
#If および #ElseIf ステートメントでは必須、その他の場所では省略可能です。 1 つ以上の条件付きコンパイラ定数、リテラル、演算子のみで構成され、True または False に評価される式です。

statements
#If ステートメント ブロックでは必須、その他の場所では省略可能です。 関連する式が True に評価された場合にコンパイルされる、Visual Basic のプログラム行またはコンパイラ ディレクティブです。

#End If
#If ステートメント ブロックを終了します。

Remarks

表面上、#If...Then...#Else ディレクティブの動作は If...Then...Else ステートメントの動作と同じように見えます。 ただし、#If...Then...#Else ディレクティブではコンパイラによってコンパイルされる内容が評価されるのに対し、If...Then...Else ステートメントでは実行時に条件が評価されます。

通常、条件付きコンパイルは、異なるプラットフォームで同じプログラムをコンパイルする場合に使用されます。 また、デバッグ コードが実行可能ファイルに現れないようにするためにも使用されます。 条件付きコンパイルで除外されたコードは、最終的な実行可能ファイルから完全に削除されるため、サイズやパフォーマンスに影響しません。

評価の結果に関係なく、すべての式は Option Compare Binary を使用して評価されます。 Option Compare ステートメントは、#If および #ElseIf ステートメントの式には作用しません。

Note

1 行形式の #If#Else#ElseIf#End If ディレクティブは存在しません。 この各ディレクティブと同じ行に他のコードを記述することはできません。

条件付きコンパイル ブロック内のステートメントは、完全な論理ステートメントでなければなりません。 たとえば、関数の属性のみを条件付きでコンパイルすることはできませんが、次のように関数をその属性ととも条件付きで宣言することはできます。

#If DEBUG Then
<WebMethod()>
Public Function SomeFunction() As String
#Else
<WebMethod(CacheDuration:=86400)>
Public Function SomeFunction() As String
#End If

この例では、#If...Then...#Else コンストラクトを使用して、特定のステートメントをコンパイルするかどうかを判断します。

#Const CustomerNumber = 36
#If CustomerNumber = 35 Then
        ' Insert code to be compiled for customer # 35.
#ElseIf CustomerNumber = 36 Then
        ' Insert code to be compiled for customer # 36.
#Else
        ' Insert code to be compiled for all other customers.
#End If

関連項目