#if在c#中没有调试?

use*_*618 112 c# vb.net

我在vb代码中有一行:

#if Not Debug
Run Code Online (Sandbox Code Playgroud)

我必须转换,我在c#中看不到它?

有没有相当于它的东西,还是有一些解决方法?

Cod*_*ked 214

你需要使用:

#if !DEBUG
    // Your code here
#endif
Run Code Online (Sandbox Code Playgroud)

或者,如果您的符号实际上是 Debug

#if !Debug
    // Your code here
#endif
Run Code Online (Sandbox Code Playgroud)

文档中,您可以有效地将其DEBUG视为布尔值.所以你可以做复杂的测试,如:

#if !DEBUG || (DEBUG && SOMETHING)
Run Code Online (Sandbox Code Playgroud)


Aar*_*els 13

只是让你熟悉这里发生的事情,#if是一个预处理表达式,并且DEBUG是一个条件编译符号.这是一篇MSDN文章,可以进行更深入的解释.

默认情况下,在Debug配置中,Visual Studio将检查项目的Build属性下的Define DEBUG常量选项.这适用于C#和VB.NET.如果你想变得疯狂,你可以定义新的构建配置并定义自己的条件编译符号.你看到这个的典型例子是:

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif
Run Code Online (Sandbox Code Playgroud)


Vac*_*ano 7

万一它可以帮助别人,这是我的答案.

这不会正常工作:

#if !DEBUG
     // My stuff here
#endif
Run Code Online (Sandbox Code Playgroud)

但这确实有效:

#if (DEBUG == false)
     // My stuff here
#endif
Run Code Online (Sandbox Code Playgroud)

  • 可能在发布的那一天是正确的,但至少对于VS 2015!DEBUG确实按预期工作 (3认同)

Kha*_*han 5

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

 #if (DEBUG)
//Something
#else
//Something
#endif
Run Code Online (Sandbox Code Playgroud)

  • 只是注意到这个有条件的`#if`语句不需要括号.它可以写成`#if DEBUG` (5认同)