#如果不是在c#中调试?
我有一行vb代码:#如果不是在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视为布
#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
}