• C#条件编译


    条件编译是C#比Java多出的东西,条件编译在实际的项目开发中不怎么使用.但在最近的一个学习的项目中发现这类的问题,
    条件编译是C#比Java多出的东西,但我跟前辈请教后,他们都说条件编译在实际的项目开发中不怎么使用.鉴于是新内容,我还是做做笔记,理解一下好了.
     
      条件编译属于编译预处理的范畴,它能让我们通过条件编译的机制,将部分代码包括进来或者排除出去,其作用与if-else类似.
     条件编译指令有以下四种
        #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”);
        }
      }


  • 相关阅读:
    创建商品APP
    商品模块表结构分析
    sprintf 和 fprintf
    linux中sys目录
    linux中proc目录
    ioctl()函数
    ffmpeg下载安装
    【转】写给小白的实时音视频技术入门提纲
    linux常见目录解释
    linux nfs客户端开启失败解决办法
  • 原文地址:https://www.cnblogs.com/endv/p/4323101.html
Copyright © 2020-2023  润新知