阅读(2480) (18)

VB.Net - 指令

2016-12-12 14:26:47 更新

VB.Net编译器指令用于在编译前预处理信息。

这些指令以#开头,并且一行上只能有空格在指令前。它们不是语句。

VB.Net编译器没有预处理器,但是指令会被处理,就像有预编译器一样。

在VB.Net中,编译器指令主要用于条件编译。它们与C和C ++指令不同,不能用于创建宏。

在 VB.Net 编译器指令

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

  • #Const 指令

  • #ExternalSource 指令

  • #If...Then...#Else 指令

  • #Region 指令

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

The#ExternalSource指令

指令 指示特定 源代码外部文本之间映射 使用编译器调试器影响代码编译
指令允许 包括外部代码文件外部代码一个源代码文件
指令语法
#ExternalSource( StringLiteral , IntLiteral )
    [ LogicalLine ]
#End ExternalSource

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

示例

以下代码演示了伪指令的使用:

Module mydirectives
    Public Class ExternalSourceTester
        Sub TestExternalSource()
        #ExternalSource("c:vbprogsdirectives.vb", 5)
            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

当上述代码被编译和执行时,它产生了以下结果:

This is External Code.
In Main.

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

示例

下面的代码演示一个假设使用的指令:

Module mydirectives
#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

当上述代码被编译和执行时,它产生了以下结果:

Exam Questions for Class VIII

The #Region指令

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


此伪指令的语法是:

#Region "identifier_string" 
#End Region

例如,

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