我需要在我的软件中记录大量信息以进行调试.但是我只在开发期间需要这个选项,我宁愿在Release中排除所有这些代码.
当然我可以用"if"包围我想调试的地方:
if (isDebugMode()) {
Logger.log(blahblah);
}
Run Code Online (Sandbox Code Playgroud)
但是因为我的软件对时间要求很高,所以我想避免大量的unnesseray"if"测试.
即我认为我需要模拟c"#define #ifdef #ifndef".c#或.net中是否有任何技术可以轻松解决我的任务?
Bli*_*ndy 13
您可以[ConditionalAttribute("DEBUG")]在Logger.log方法前使用,这样它只能在调试模式下编译,并在发布模式下完全删除.
这就是Debug类方法都被标记的方式.
与使用该#if方法相比,这种方法的好处是具有该Conditional属性的代码在运行时甚至不存在,并且所有对它的引用都被删除,而不是留在空体(或者你有条件地编译它).
你为什么不改用这个DEBUG符号呢?
#if DEBUG
// debug only code here
#endif
Run Code Online (Sandbox Code Playgroud)
这篇文章描述了C#中可用的所有预处理程序指令,您还可以在项目的属性菜单中定义自己的预处理程序变量.
| 归档时间: |
|
| 查看次数: |
1018 次 |
| 最近记录: |