#If...Then...#Else 指令

有条件地编译所选的 Visual Basic 代码块。

语法

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

部件

expression
对于 #If#ElseIf 语句是必需的,在其他地方是可选的。 任何表达式(由计算结果为或False计算结果True的一个或多个条件编译器常量、文本和运算符)组成。

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 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

另请参阅