共用方式為


Visual Basic 中的條件式編譯

在「條件式編譯」中,會選擇性地編譯程式中的特定程式碼區塊,並忽略其他程式碼區塊。

例如,您可能想要撰寫偵錯陳述式來比較不同方法完成相同程式設計工作的速度,或者您可能想要將應用程式當地語系化為多種語言。 條件式編譯陳述式設計成在編譯時間執行,而不是在執行階段執行。

您會使用 #If...Then...#Else 指示詞來表示有條件編譯的程式碼區塊。 例如,若要從相同原始程式碼建立相同應用程式的法文和德文語言版本,您可以使用預先定義的常數 FrenchVersionGermanVersion,將平台特定的程式碼區段內嵌於 #If...Then 陳述式。 下列範例示範做法:

#If FrenchVersion Then
   ' <code specific to the French language version>.
#ElseIf GermanVersion Then
   ' <code specific to the German language version>.
#Else
        ' <code specific to other versions>.
#End If

如果您在編譯時間將 FrenchVersion 條件式編譯常數的值設定為 True,則會編譯法文版本的條件程式碼。 如果您將 GermanVersion 常數的值設定為 True,則編譯器會使用德文版本。 如果兩者都未設定為 True,則會執行最後一個 Else 區塊中的程式碼。

注意

如果程式碼不是最新分支的一部分,則編輯程式碼並使用條件式編譯指示詞時,自動完成將無法運作。

宣告條件式編譯常數

您可以使用下列三種方式的其中一種來設定條件式編譯常數:

  • 在 [專案設計工具]

  • 在命令列中 (使用命令列編譯器時)

  • 在您的程式碼

條件式編譯常數具有特殊範圍,無法從標準程式碼存取。 條件式編譯常數的範圍取決於其設定方式。 下表列出使用上述三種方式的其中一種所宣告的常數範圍。

常數的設定方式 常數的範圍
專案設計工具 專案中所有檔案的公用常數
命令列 傳遞至命令列編譯器之所有檔案的公用常數
程式碼中的 #Const 陳述式 其宣告所在檔案的私用常數
在 [專案設計工具] 中設定常數
- 建立可執行檔之前,請遵循管理專案和方案屬性中提供的步驟,在 [專案設計工具] 中設定常數。
在命令列中設定常數
- 使用 -d 參數來輸入條件式編譯常數,如下列範例所示:
vbc MyProj.vb /d:conFrenchVersion=–1:conANSI=0
-d 參數與第一個常數之間不需要空格。 如需詳細資訊,請參閱 -define (Visual Basic)
命令列宣告會覆寫在 [專案設計工具] 中輸入的宣告,但不會予以清除。 在 [專案設計工具] 中設定的引數仍然有效,可供後續編譯使用。
在程式碼本身內撰寫常數時,對於常數位置沒有嚴格的規則,因為常數範圍是其宣告所在的整個模組。
在程式碼中設定常數
- 將常數放在使用常數之模組的宣告區塊中。 這有助於讓您的程式碼保持井然有序且更容易閱讀。
標題 描述
程式結構和程式碼慣例 提供建議,讓您的程式碼易於閱讀和維護。

參考

#Const 指示詞

#If...Then...#Else 指示詞

-define (Visual Basic)