【问题标题】:What is the difference between an "if" and a "#if" in C#? [duplicate]C# 中的“if”和“#if”有什么区别? [复制]
【发布时间】:2019-07-21 18:04:48
【问题描述】:

我是 C# 新手,不会做很多面向对象的编程。我见过一些使用 C# 的 #IF 语法的示例,但我不知道它与常规 IF 有何不同。

【问题讨论】:

  • # 命令是编译器指令 - 它们由编译器在编译时评估,因此它们会影响实际编译的代码。

标签: c#


【解决方案1】:

#if

是一个预处理指令。预处理器指令指示编译器在实际编译开始之前预处理信息。 “ #if ” 允许测试一个或多个符号以查看它们的计算结果是否为真。

例如。

#define PI 
using System;

namespace PreprocessorDAppl {
   class Program {
      static void Main(string[] args) {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}

上面的代码会给出结果:PI is defined

if 是 c# 中的条件运算符。如果给定条件为真,if 语句将执行一段代码。

if(num == 5){ 
  Console.WriteLine("Five")
}

结果:五个

希望对你有帮助

【讨论】:

    【解决方案2】:

    该指令通常用于在编译时添加条件代码。因此,如果您在调试模式下编译并添加类似

    的内容
    #if DEBUG 
     // something else
    #endif 
    

    这部分代码会在Debug中编译,在Release中跳过

    你可以在这里找到更多信息

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if

    【讨论】:

    • 好的,这是一种避免编译给定场景中不需要的代码的方法。
    • @Jaked:这是在 C 时代添加回来的初衷:en.wikibooks.org/wiki/C_Programming/… 他们仍然以这种方式工作,但在此后的几十年里,它们的使用变得越来越少。 Debug/Release 模式涵盖了大多数情况,而对于其余情况,您通常希望在运行时而不是编译时具有适应性。所以你可能永远不会使用#if。
    猜你喜欢
    • 2019-11-20
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2013-11-18
    • 2012-09-16
    • 2016-11-11
    • 2011-03-11
    相关资源
    最近更新 更多