代码之家  ›  专栏  ›  技术社区  ›  Jack Kada

VB#If关键字-效果#

  •  0
  • Jack Kada  · 技术社区  · 14 年前

    谷歌不适合搜索#符号

    if前面的#会产生什么影响?

    我在清理别人的烂摊子,以前从没见过这样的

    6 回复  |  直到 13 年前
        1
  •  3
  •   programatique    14 年前

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

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

        2
  •  2
  •   SQLMenace    14 年前

    Preprocessor Directive

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

        3
  •  2
  •   Greg    14 年前

    #If...Then...#Else 指令与 If…Then…Else语句。然而, “如果…那么…”Else指令 语句在运行时评估条件

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

        4
  •  1
  •   Community CDub    5 年前

    这个 #If...Then...#Else

    它的功能就像一个普通的 If...Then...Else 但不同的是,条件是在编译程序时计算的。这会导致代码的某些部分未被编译。

    这个 #If Beep() 节将在调试模式下编译,但当项目的输出类型更改为Release时,将不会编译该节。

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

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

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

    • 配置: (字符串)或 调试 释放
    • 调试: 可以作为布尔值计算 是的 )如果项目配置为“调试”。
    • 平台: x86个 x64个
    • 目标: (字符串) 葡萄酒 对于Windows窗体应用程序和Windows服务, 用于控制台应用程序和 图书馆 对于类库和Web控件库
    • 跟踪: 可以作为布尔值计算 )-1(或 是的 )如果定义了跟踪常量。
    • (双倍?*不确定)指示的版本号VB.NET版编译器。



    进一步阅读:

        5
  •  0
  •   supercat    14 年前

    #If/#Else/#EndIf指令可以用来告诉编译器、Intellisense等忽略代码段。如果一个封闭的一些代码在一个“如果假那么。。。End If”语句,代码将永远不会执行,但编译器仍将处理它,Intellisense仍将更新它。如果程序的一部分被“#If False…”包围。。。#“EndIf”,它基本上将被视为评论。没有要求“#If False”指令中的内容在语法上有效,像“Rename variable”这样的工具不会影响它。

        6
  •  0
  •   Stefan    14 年前

    举个例子(其他人已经回答了什么是#-指令):

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

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