McA*_*Lee 14 c# debugging release compilation
我是C#的新手,在编译C#项目时遇到问题.它是关于Debug和Release模式下的调试日志.我希望在调试模式下调用日志函数,但不要在发布模式下调用,同时考虑性能.我知道在C/C++中,这很容易做到:
// this is C/C++ sample, not C#
#ifdef DEBUG
#define DebugLog(CString,__VA_ARGS__) LogFunction(CString,__VA_ARGS__)
#else
#define DebugLog
#endif
Run Code Online (Sandbox Code Playgroud)
在上面的C/C++代码中,DebugLog()在Debug模式下编译和调用,但在Release模式下不编译或调用,因此可以确保性能.
C#中是否有与上述C/C++代码类似的东西?
Bal*_*a R 18
在C#中你可以做到
#if DEBUG
//debug-mode only snippet go here.
#endif
Run Code Online (Sandbox Code Playgroud)
这是该指令的参考文档#if.
Han*_*ant 15
等效于方法的[Conditional]属性.像这样:
[Conditional("DEBUG")]
public static void DebugLog(string fmt, params object[] args) {
// etc..
}
Run Code Online (Sandbox Code Playgroud)
在Release版本中(未定义DEBUG),编译器将删除方法和对方法的调用.在重新发明这个轮子之前,请务必查看.NET框架中的Debug和Trace类,他们已经这样做了.并且具有很大的灵活性来重定向调试/跟踪信息.
| 归档时间: |
|
| 查看次数: |
12761 次 |
| 最近记录: |