#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
関連項目
.NET