查看文章 |
《Effective C#》笔记4.使用Conditional特性代替#if条件编译
2007-12-14 09:23
#if/#endif条件编译用来由一份源代码生成不同的结果文件,常见的有debug版和release版。但这样创建的代码比较难理解且难调试,下面的代码在release版本中实际上变成了一个空方法,但在release和debug版本中都将会调用,虽然在release版中什么都不做,但也会为方法的加载和调用付出成本。 private void CheckState() C#因此提出了更好的选择,使用conditional特性,conditional可以将一些函数隔离出来,使得它们在某些环境下才能生效 [Conditional("DEBUG")] 上面的CheckState()只有在DEBUG环境下才会产生对CheckState()的调用,即Conditional不会影响它的编译,只会影响对该方法的调用。如: public string LastName
public string LastName 无论是否有定义DEBUG符号,CheckState()都维持不变,并会被编译到程序集中,虽然看起来会有效率损失,但实际只是耗费了磁盘空间而已,如果没有被调用,是不会被加载到内存中的。
|
最近读者:
