#if #else #endif和Regular if之间的差异,否则

Rom*_*key 5 .net c#

正如标题所述,我想知道使用之间有什么区别

#if
   DoWork();
#else
   DoAnotherWork();
#endif
Run Code Online (Sandbox Code Playgroud)

if (debug)
   DoWork();
else
   DoAnotherWork();
Run Code Online (Sandbox Code Playgroud)

Dan*_*din 11

if (debug)
    DoWork();
else
    DoAnotherWork();
Run Code Online (Sandbox Code Playgroud)

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

#if
    DoWork();
#else
    DoAnotherWork();
#endif
Run Code Online (Sandbox Code Playgroud)

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

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

请阅读预处理器指令

预处理器指令


Van*_*dze 9

首先是预处理器指令和第二个逻辑语句.

  • 尽管有大量的赞成票,但这不是最好的答案.没有这些链接,你的答案并没有解释这两个概念的含义.你的答案应该是独立的,以备将来参考.请考虑扩大您的答案,以便链接补充答案,而不是提供唯一的详细信息 (2认同)

Jon*_*ood 6

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

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