欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#.NET学习笔记5 C#中的条件编译

程序员文章站 2023-11-12 22:33:34
条件编译是c#比java多出的东西,但我跟前辈请教后,他们都说条件编译在实际的项目开发中不怎么使用.鉴于是新内容,我还是做做笔记,理解一下好了.  条件编译属于编译预处理的...
条件编译是c#比java多出的东西,但我跟前辈请教后,他们都说条件编译在实际的项目开发中不怎么使用.鉴于是新内容,我还是做做笔记,理解一下好了.
  条件编译属于编译预处理的范畴,它能让我们通过条件编译的机制,将部分代码包括进来或者排除出去,其作用与if-else类似.
条件编译指令有以下四种???? #if???? #elif???? #else???? #endif  条件编译指令有以下四种
    #if
    #elif
      #else
    #endif
  下面我们通一些例子来说明它们的用法
复制代码 代码如下:

#define debug
  class class1
 {
      #if debug
      void trace(string s) {}
      #endif
 }

执行时由于第一行已经使用#define 指令定义了符号debug, #if 的条件满足,所以这段代码等同于
复制代码 代码如下:

class class1
{
   void trace(string s) {}
}

再比如:  
复制代码 代码如下:

#define a
   #define b
   #undef c
   class d
  {
      #if c
         void f() {}
             #elif a && b
                void i() {}
      #else
         void g() {}
      #endif
  }

其编译效果等同于:
复制代码 代码如下:

class c
{
   void i() {}
}

#if 指令可以嵌套使用, 例如:
复制代码 代码如下:

#define debug // debugging on
   #undef trace // tracing off
   class purchasetransaction
  {
      void commit()
    {
      #if debug
          checkconsistency();
          #if trace
            writetolog(this.tostring());
          #endif
      #endif
      commithelper();
     }
  }

预编译和条件编译指令还可以帮助我们在程序执行过程中发出编译的错误或警告,相应的指令是#warning 和#error,下面的程序展示了它们的用法:
复制代码 代码如下:

#define debug
   #define release
   #define demo version
     #if demo version && !debug
        #warning you are building a demo version
     #endif
     #if debug && demo version
       #error you cannot build a debug demo version
     #endif
   using system;
   class demo
  {
     public static void main()
    {
      console.writeline(“demo application”);
    }
  }

作者:notifier