#if #else #endif和Regular之间的区别if,else

时间:2013-02-23 00:02:35

标签: c# .net

正如标题所述,我想知道使用

之间有什么区别
#if
   DoWork();
#else
   DoAnotherWork();
#endif

if (debug)
   DoWork();
else
   DoAnotherWork();

3 个答案:

答案 0 :(得分:11)

if (debug)
    DoWork();
else
    DoAnotherWork();

将编译上述代码,并在运行时检查条件。

#if
    DoWork();
#else
    DoAnotherWork();
#endif

将在编译时检查这些语句。

所以如果#if condition为true,DoWork();将被编译,否则DoAnotherWork();将被编译。在前面的例子中,所有包含if语句的代码都将被编译。

请阅读预处理器指令

Preprocessor Directives

答案 1 :(得分:9)

首先是Preprocessor Directive,第二个是Logical statement

答案 2 :(得分:6)

第一个版本使用预处理程序指令。这些是编译器本身仅编译某些语句的指令。生成的可执行文件将仅包含已编译的语句。因此,条件必须是可以在编译时进行评估的条件。

第二个版本在运行时进行评估。编译器将编译所有语句以及用于评估if条件的逻辑。所有语句都将包含在生成的可执行文件中。实际执行的语句将在代码运行时确定。