有条件地编译所选的 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