VB #If KeyWord - #的影响

时间:2010-09-01 18:49:33

标签: vb.net

Google不适合搜索#符号

if在make前面有什么影响?

我正在清理一些混乱,并且从未见过这个

6 个答案:

答案 0 :(得分:3)

这些是指令或“预处理器指令”。它们基本上允许对VB代码进行条件编译。这是与VB相关的MSDN文章:

http://msdn.microsoft.com/en-us/library/tx6yas69.aspx

答案 1 :(得分:2)

这是Preprocessor Directive

预处理指令提供了有条件地跳过源文件部分,报告错误和警告条件以及描述源代码的不同区域的能力

答案 2 :(得分:2)

  

从表面上看,行为   #If...Then...#Else指令看起来与指令相同   如果......那么......其他陈述。然而,   #If ...然后...... #Else指令   评估由什么编译   编译器,而If ... Then ... Else   语句评估运行条件   时间。

http://msdn.microsoft.com/en-us/library/tx6yas69.aspx

答案 3 :(得分:1)

#If...Then...#Else是一个预处理程序指令,它允许根据特定条件编译代码的某些部分。

它的作用与常规If...Then...Else语句类似,但不同之处在于在编译程序时会评估条件。这导致代码的某些部分没有被编译。

当您希望为应用程序的Debug版本编译某些代码而不是为发布版本编译代码时,#If会很有用。以下面的代码为例。通过编写下面的代码,Beep()部分将在调试模式下编译,但是当项目的输出类型更改为Release时,该部分将不会被编译。

#If DEBUG Then
        'beep once in debug mode
        Beep()
#Else
        'do nothing
#End If

#If指令适用于Conditional Compilation Directives。这些是在编译时计算的“变量”,用于确定要编译的代码的哪些部分。

在标准项目中,您有以下条件编译指令:

  • CONFIG:(字符串)调试发布
  • DEBUG:(int32,可以评估为布尔)-1(或 True ),如果项目配置是调试的。
  • PLATFORM:(字符串) x86 x64 分别用于32位或64位编译模式。
  • TARGET:(字符串) winexe 用于Windows窗体应用程序和Windows服务, exe 用于控制台应用程序和用于类库和Web控件库
  • TRACE:(int32,可以评估为布尔)-1(或 True )如果定义了跟踪常量。
  • VBC_VER:(double?*不确定)表示VB.NET编译器的版本号。

使用这些条件编译指令,您可以轻松地将代码的某些部分编译到输出中。

进一步阅读:

答案 4 :(得分:0)

#If /#Else / #EndIf指令可用于告诉编译器,Intellisense等忽略代码段。如果在“If False Then ... End If”语句中包含一些代码,代码将永远不会执行,但编译器仍将处理它,并且Intellisense仍将更新它。如果程序的一部分被“#If False ... #EndIf”包围,它将基本上被视为注释。不要求“#If False”指令中的内容在语法上有效,而“重命名变量”之类的工具不会影响它。

答案 5 :(得分:0)

只是为了给一个考试(其他人已经回答了#-directive是什么):

#IF debug=true
 userhandler.login("stefan","mypassword")
#else
 userhandler.login(usernameTextbox.text,userpasswordTextbox.text)
#end if

当您在调试模式下运行代码时,编译器将自动处理IF条件的真实部分中的代码。当您将项目设置为释放并重建项目时,它将使用if条件的其他部分。通过这种方式,您可以使程序员更容易进行测试,以及其他许多场景。