#If...Then...#Else ディレクティブ
更新 : 2007 年 11 月
式の値に基づいて、条件付きのコンパイルを行います。
#If expression Then
statements
[ #ElseIf expression Then
[ statements ]
...
#ElseIf expression Then
[ statements ] ]
[ #Else
[ statements ] ]
#End If
指定項目
expression
#If ステートメントおよび #ElseIf ステートメント に対しては必ず指定します。それ以外の場合は省略できます。真 (True) または偽 (False) を評価する、1 つ以上の条件付きコンパイル定数、リテラル値、および演算子だけで構成される任意の式を指定します。statements
#If ステートメント ブロックに対しては必ず指定します。それ以外の場合は省略できます。関連付けられた式が真 (True) に評価される場合にコンパイルされる、Visual Basic のプログラム行またはコンパイラ ディレクティブを指定します。#End If
#If ステートメント ブロックを終了します。
解説
#If...Then...#Else ディレクティブの動作は、If...Then...Else ステートメントの動作と表面上は同じに見えます。しかし、#If...Then...#Else ディレクティブはコンパイラが何をコンパイルするかを評価するのに対し、If...Then...Else ステートメントは実行時に条件を評価する点が異なります。
通常、条件付きコンパイルは、同じプログラムを異なるシステムでコンパイルするために使用します。また、デバッグ コードが実行可能ファイルに表示されるのを防ぐためにも使用します。条件付きコンパイルによって省略されたコードは、コンパイル後の実行可能ファイルからは取り除かれるため、プログラムのサイズや動作に影響しません。
評価結果に関係なく、すべての式が Option Compare Binary を使って評価されます。Option Compare ステートメントは、#If ステートメントと #ElseIf ステートメントの式に影響しません。
メモ : |
---|
#If、#Else、#ElseIf、および #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