代码之家  ›  专栏  ›  技术社区  ›  GregH

如何使用#IF DEBUG inVB.NET版

  •  23
  • GregH  · 技术社区  · 14 年前

    #IF DEBUG 有条件的?

    如果在中运行,我希望有条件地从主窗体加载中执行一些代码 DEBUG

    Public Class Form1
        public DEB as Integer
    
        #if DEBUG then
            DEB = 1
        #else
            DEB = 0
        #end if
    
        Private Sub Form1_Load(....)
            if DEB=1 Then
                <do something>
            else
                <do something else>
            end if
        ....
    

    但是,似乎无法为变量赋值。我显然没有正确理解范围界定。我好像放不下 #if DEBUG 加载子程序内部。我该怎么做?

    2 回复  |  直到 10 年前
        1
  •  43
  •   Christian Hayter    14 年前

    为什么不直接测试编译常量呢?通过测试一个实际的变量,你不会得到任何东西。

    Public Class Form1
    
    Private Sub Form1_Load(....)
    
    #if DEBUG then
        <do something>
    #else 
        <do something else>
    #end if
    
    End Sub
    
    End Class
    
        2
  •  0
  •   SteveCinq    6 年前

    我看不出你有什么问题。我这样做,效果很好。编译常量不能直接用于运行代码,这有点烦人,但仔细想想还是有道理的。

    作为对Christian的回应,我认为反对将代码封装在编译器指令中的理由是,使用一个代码变量,您可以编写更干净、更具描述性的代码,同时可能减少重复,从而简化维护。

    Public Module Common
    
        #if DEBUG then
            Public In_Debug As Boolean = True
        #else
            Public In_Debug As Boolean = False
        #end if
    End Module
    
    Public Class Form1
    
        Private Sub Form1_Load(....)
    
            If In_Debug Then SplashScreen.Hide()
            ...
    

    放置 In-Debug 公共模块中的代码变量有效地使其成为 在整个项目中可以将其视为常量。

    (示例说明:我不在调试中显示启动屏幕,因为它可能隐藏对话框等,从而阻止您继续进行。)

    而且,是的,正如GregH提到的,您需要确保在项目的 调试 释放