mar*_*man 0 c# debugging compiler-directives c-preprocessor
我想知道它们之间有什么区别
#define MYSYMBOL
#if MYSYMBOL
public void foo () {
// ...
}
#endif
Run Code Online (Sandbox Code Playgroud)
和
#define MYSYMBOL
[Conditional("MYSYMBOL")]
public void foo () {
// ...
}
Run Code Online (Sandbox Code Playgroud)
?
也许这是显而易见的,但如果有人能给我一个正确方向的提示,我会很感激:)
它们是不同的.
使用#if完全删除所附的代码,因此调用该方法的任何代码都将无法编译,因为该方法已消失.您也可以通过这种方式包装任意数量的代码,而不仅仅是一个完整的方法.
使用[Conditional]意味着该方法不会在运行时调用,但对它的调用仍将编译(但不会在IL代码中发出调用).而且,这样一来,该方法必须返回void,并没有任何out或ref参数.
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |