省略代码:条件属性和预处理指令之间有什么区别吗?

2024-02-06

我想知道两者之间有什么区别

#define MYSYMBOL

#if MYSYMBOL
public void foo () {

    // ...
}
#endif

and

#define MYSYMBOL

[Conditional("MYSYMBOL")]
public void foo () {

    // ...
}

?

也许这是显而易见的,但如果有人能给我正确方向的提示,我将不胜感激:)


他们是不同的。

Using #if完全删除包含的代码,因此调用该方法的任何代码都不会编译,因为该方法已消失。您还可以通过这种方式包装任意数量的代码,而不仅仅是单个完整方法。

Using [Conditional]意味着该方法不会在运行时调用,但对其的调用仍会编译(但调用不会在 IL 代码中发出)。另外,这样,该方法必须返回void并且没有任何out or ref参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

省略代码:条件属性和预处理指令之间有什么区别吗? 的相关文章

随机推荐