VB.Net編譯器指令給編譯器提供指令,在實際編譯開始之前對資訊進行預處理。
所有這些指令都以#
字元開始,只有空格字元可能出現在一行上的指令之前。這些指令不是語句。
VB.Net編譯器沒有單獨的前處理器; 然而,指令被處理好像有一個。在VB.Net中,編譯器指令用於幫助進行條件編譯。與C和C++指令不同,它們不用於建立巨集。
VB.Net提供了以下一組編譯器指令:
#Const
指令#ExternalSource
指令#If...Then...#Else
指令#Region
指令這個指令定義了條件編譯器常數。這個指令的語法是:
#Const constname = expression
其中,
Is
以外的任何或所有算術或邏輯運算子的組合。例如,
#Const state = "WEST BENGAL"
範例
下面的程式碼演示了這個指令的用法:
Module mydirectives
#Const age = True
Sub Main()
#If age Then
Console.WriteLine("You are welcome to the Robotics Club")
#End If
Console.ReadKey()
End Sub
End Module
當上面的程式碼被編譯並執行時,會產生以下結果:
You are welcome to the Robotics Club
該指令用於指示特定的原始碼行和原始碼外部的文字之間的對映。它只用於編譯器,偵錯器對程式碼編譯沒有影響。
該指令允許將來自外部程式碼檔案的外部程式碼包含到原始碼檔案中。
這個指令的語法是:
#ExternalSource( StringLiteral , IntLiteral )
[ LogicalLine ]
#End ExternalSource
#ExternalSource
指令的引數是外部檔案的路徑,第一行的行號和發生錯誤的行。
範例
下面的程式碼演示了這個指令的假設用法:
Module mydirectives
Public Class ExternalSourceTester
Sub TestExternalSource()
#ExternalSource("F:\worksp\vb.net\helloworld.vb", 0)
Console.WriteLine("This is External Code. ")
#End ExternalSource
End Sub
End Class
Sub Main()
Dim t As New ExternalSourceTester()
t.TestExternalSource()
Console.WriteLine("In Main.")
Console.ReadKey()
End Sub
End Module
當上面的程式碼被編譯並執行時,會產生以下結果:
F:\worksp\vb.net>vbc mydirectives.vbc
F:\worksp\vb.net>mydirectives.exe
This is External Code.
In Main.
該指令有條件地編譯選定的Visual Basic程式碼塊。
這個指令的語法是:
#If expression Then
statements
[ #ElseIf expression Then
[ statements ]
...
#ElseIf expression Then
[ statements ] ]
[ #Else
[ statements ] ]
#End If
例如,
#Const TargetOS = "Linux"
#If TargetOS = "Windows 7" Then
' Windows 7 specific code
#ElseIf TargetOS = "WinXP" Then
' Windows XP specific code
#Else
' Code for other OS
#End if
範例
下面的程式碼演示了這個指令的用法,程式碼檔案:ifthenelse_directives.vb -
Module ifthenelse_directives
#Const classCode = 8
Sub Main()
#If classCode = 7 Then
Console.WriteLine("Exam Questions for Class VII")
#ElseIf classCode = 8 Then
Console.WriteLine("Exam Questions for Class VIII")
#Else
Console.WriteLine("Exam Questions for Higher Classes")
#End If
Console.ReadKey()
End Sub
End Module
執行上面範例程式碼,得到以下結果 -
F:\worksp\vb.net>vbc ifthenelse_directives.vb
......
F:\worksp\vb.net>ifthenelse_directives.exe
Exam Questions for Class VIII
該指令有助於在Visual Basic檔案中折疊和隱藏程式碼段。
這個指令的語法是:
#Region "identifier_string"
#End Region
範例 -
#Region "StatsFunctions"
' Insert code for the Statistical functions here. '
#End Region