#If...Then...#Else 指示詞
有條件地編譯 Visual Basic 程式碼的選取區塊。
語法
#If expression Then
statements
[ #ElseIf expression Then
[ statements ]
...
#ElseIf expression Then
[ statements ] ]
[ #Else
[ statements ] ]
#End If
組件
expression
#If
和 #ElseIf
陳述式的必要項目,在其他地方為選擇性。 任何運算式,只包含評估為 True
或 False
的一或多個條件式編譯器常數、常值和運算子。
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