#如果不是在c#中调试?

#如果不是在c#中调试?,c#,vb.net,C#,Vb.net,我有一行vb代码: #if Not Debug 我必须转换,但我在c中看不到 是否有与之相当的东西,或者有一些解决方法?我认为类似的东西会起作用 #if (DEBUG) //Something #else //Something #endif 您需要使用: #if !DEBUG // Your code here #endif 或者,如果您的符号实际上是Debug #if !Debug // Your code here #endif 从中,可以有效地将DEBUG视为布

我有一行vb代码:

#if Not Debug
我必须转换,但我在c中看不到


是否有与之相当的东西,或者有一些解决方法?

我认为类似的东西会起作用

 #if (DEBUG)
//Something
#else
//Something
#endif
您需要使用:

#if !DEBUG
    // Your code here
#endif
或者,如果您的符号实际上是
Debug

#if !Debug
    // Your code here
#endif
从中,可以有效地将
DEBUG
视为布尔值。因此,您可以执行复杂的测试,如:

#if !DEBUG || (DEBUG && SOMETHING)

如果
是一个预处理表达式,
DEBUG
是一个条件编译符号,那么就让您熟悉这里的情况。以获得更深入的解释

默认情况下,在调试配置中,Visual Studio将检查项目的生成属性下的定义调试常量选项。这适用于C#和VB.NET。如果您想发疯,可以定义新的构建配置并定义自己的条件编译符号。当您看到这一点时,典型的示例是:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif

为了以防万一,这是我的答案

这是行不通的:

#if !DEBUG
     // My stuff here
#endif
但这确实奏效了:

#if (DEBUG == false)
     // My stuff here
#endif

只需注意此条件
#if
语句不需要括号。可以编写
#如果DEBUG
这是一个糟糕的答案,因为它使用运行时逻辑来处理编译时可以完成的事情。设计时T4模板和类似的东西将不时需要这种东西。可能在发布这篇文章的当天就已经正确了,但至少在VS 2015中是这样!调试确实按预期工作
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }