VB.Net指令

VB.Net編譯器指令給編譯器提供指令,在實際編譯開始之前對信息進行預處理。

所有這些指令都以#字符開始,只有空格字符可能出現在一行上的指令之前。這些指令不是語句。

VB.Net編譯器沒有單獨的預處理器; 然而,指令被處理好像有一個。在VB.Net中,編譯器指令用於幫助進行條件編譯。與C和C++指令不同,它們不用於創建宏。

VB.Net編譯指令

VB.Net提供了以下一組編譯器指令:

  • #Const指令
  • #ExternalSource指令
  • #If...Then...#Else指令
  • #Region指令

#Const指令

這個指令定義了條件編譯器常量。這個指令的語法是:

#Const constname = expression

其中,

  • 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指令

該指令用於指示特定的源代碼行和源代碼外部的文本之間的映射。它只用於編譯器,調試器對代碼編譯沒有影響。

該指令允許將來自外部代碼文件的外部代碼包含到源代碼文件中。

這個指令的語法是:

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

#If … Then …#Else指令

該指令有條件地編譯選定的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

#Region指令

該指令有助於在Visual Basic文件中摺疊和隱藏代碼段。

這個指令的語法是:

#Region "identifier_string" 
#End Region

示例 -

#Region "StatsFunctions" 
' Insert code for the Statistical functions here. '
#End Region