Visual Basic 指令

VB 编译器指令给编译器提供指令,在实际编译开始之前对信息进行预处理。

所有这些指令都以 # 字符开始,只有空格字符可能出现在一行上的指令之前。这些指令不是语句。

VB 编译器没有单独的预处理器; 然而,指令被处理好像有一个。在 VB 中,编译器指令用于帮助进行条件编译。与 CC++ 指令不同,它们不用于创建宏。


VB 编译指令

VB 提供了以下一组编译器指令:

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

这个指令定义了条件编译器常量。这个指令的语法是:

  1. #Const constname = expression

其中,constname:必填。指定常量的名称,必需。expression:它可以是文字或其他条件编译器常量,也可以是包含除了 Is 以外的任何或所有算术或逻辑运算符的组合。

实例

下面的代码演示了这个指令的用法:

  1. Module mydirectives
  2. #Const age = True
  3. Sub Main()
  4. #If age Then
  5. Console.WriteLine("You are welcome to the Robotics Club")
  6. #End If
  7. Console.ReadKey()
  8. End Sub
  9. End Module

结果如下:

  1. You are welcome to the Robotics Club
#ExternalSource 指令

该指令用于指示特定的源代码行和源代码外部的文本之间的映射。它只用于编译器,调试器对代码编译没有影响。

该指令允许将来自外部代码文件的外部代码包含到源代码文件中。

这个指令的语法是:

  1. #ExternalSource( StringLiteral , IntLiteral )
  2. [ LogicalLine ]
  3. #End ExternalSource

#ExternalSource 指令的参数是外部文件的路径,第一行的行号和发生错误的行。

实例

下面的代码演示了这个指令的假设用法:

  1. Module mydirectives
  2. Public Class ExternalSourceTester
  3. Sub TestExternalSource()
  4. #ExternalSource("c:\vbprogs\directives.vb", 5)
  5. Console.WriteLine("This is External Code. ")
  6. #End ExternalSource
  7. End Sub
  8. End Class
  9. Sub Main()
  10. Dim t As New ExternalSourceTester()
  11. t.TestExternalSource()
  12. Console.WriteLine("In Main.")
  13. Console.ReadKey()
  14. End Sub

结果如下:

  1. This is External Code.
  2. In Main.
#If…Then…#Else 指令

该指令有条件地编译选定的 Visual Basic 代码块。

这个指令的语法是:

  1. #If expression Then
  2. statements
  3. [ #ElseIf expression Then
  4. [ statements ]
  5. ...
  6. #ElseIf expression Then
  7. [ statements ] ]
  8. [ #Else
  9. [ statements ] ]

例如,

  1. #Const TargetOS = "Linux"
  2. #If TargetOS = "Windows 7" Then
  3. ' Windows 7 specific code
  4. #ElseIf TargetOS = "WinXP" Then
  5. ' Windows XP specific code
  6. #Else
  7. ' Code for other OS
  8. #End if

实例

下面的代码演示了这个指令的用法:

  1. Module mydirectives
  2. #Const classCode = 8
  3. Sub Main()
  4. #If classCode = 7 Then
  5. Console.WriteLine("Exam Questions for Class VII")
  6. #ElseIf classCode = 8 Then
  7. Console.WriteLine("Exam Questions for Class VIII")
  8. #Else
  9. Console.WriteLine("Exam Questions for Higher Classes")
  10. #End If
  11. Console.ReadKey()
  12. End Sub
  13. End Module

结果如下:

  1. Exam Questions for Class VIII
#Region 指令

该指令有助于在 Visual Basic 文件中折叠和隐藏代码段。

这个指令的语法是:

  1. #Region "identifier_string"
  2. #End Region

例如,

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