zoukankan      html  css  js  c++  java
  • 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”);
        }
      }


  • 相关阅读:
    函数式编程
    8 Principles of Better Unit Testing
    COM 组件 V.S. .NET
    WebBrowser 禁用脚本错误提示
    Unable to automatically debug "XXXXX“
    简介
    android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习
    我的Android六章:Android中SQLite数据库操作
    Android的生命周期学习
    我的Android第五章:通过Intent实现活动与活动之间的交互
  • 原文地址:https://www.cnblogs.com/endv/p/4323101.html
Copyright © 2011-2022 走看看