zoukankan      html  css  js  c++  java
  • C#预处理器指令

    C#的预处理器指令很容易识别,你看到了#,就能认出它们。

      它和其他的命令有什么区别呢?

      区别在于这些命令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面。

      它用来做什么呢?

      当计划发布两个版本的代码的时候。即基本版和拥有更多版本的企业版,就可以用到预处理器指令。

      在编译基本版的时候,使用预处理指令会禁止编译器编译与额外功能相关的代码。

      另外,在编写提供调试信息的代码时,也可以使用预处理器指令。

      下面介绍预处理器指令的功能:

      #define和#undef

      #define用法:  #define Debug

      Debug可以看做是声明的一个变量,但此变量没有真正的值,仅存在。

      #define单独用没什么意义,一般是和#if结合使用。

      #undef用法:   #undef Debug

      作用就是删除Debug的定义。如果Debug符号不存在,这条指令就没有任何作用。如果Debug符号存在,则之前的#define就没有作用。 

      #define与#undef声明必须放在C#源文件的开头位置,即程序集的引用的上方。

      #if,#elif,#else和#endif

      下面来看一个例子  

    View Code

      #elif(=else if)和#else指令可以用在#if中,和C#中的if,else if,else含义相同。

      #if和#elif支持一组逻辑运算符"!","==","!="和"||",如果符号存在,则为true。

      #if DebugB && DebugA  //当Debug与DebugA同时存在才会执行

      #warning和#error

      当编译器遇到这两条指令时,会分别产生警告和错误。如果编译器遇到#warning指令,会显示该指令后的文本,之后继续编译。

      如果遇见#error指令,也会显示指令后面的文本。但会立刻退出编译,不会产生IL代码。(其实和编译器的警告和错误意义相同) 

    View Code

      下图为放开#error注释:

      #region和#endregion

      这两条指令,大家应该非常熟悉,作用就是代码缩进和指定该代码块的名称,使得代码可以更好的布局。详细用法可以参照报表系列的代码。

      #line

      这条指令很少用到。作用就是:如果代码在编译之前,要使用某些软件包改变输入的代码,就可以使用它。

      (其实就是更改代码的行号)

      #pragma warning

      此指令可启用或禁用某些警告。

      用法:  #pragma warning disable warning-list
                #pragma warning restore warning-list

      例子: 

    View Code

     

      #pragma checksum

      作用是生成源文件的校验和,以帮助调试 ASP.NET 页。

       用法:  #pragma checksum "filename" "{guid}" "checksum bytes"

                  filename"               要求监视更改或更新的文件的名称。                               

                  "{guid}"                文件的全局唯一标识符 (GUID)。                               

                  "checksum_bytes"  十六进制数的字符串,表示校验和的字节。必须是偶数位的十六进制数。

                                               奇数位的十六进制数字会导致编译时警告,然后指令被忽略。            

        例子:

    View Code

      

     
     
    分类: .net
  • 相关阅读:
    打开Fiddle,提示“Machine-wide Progress Telerik Fiddler installation has been found at ...Please, use that one or uninstall it ...”
    Type Target runtime Apache Tomcat v8.0 is not defined.
    Loadrunner的安装注意事项
    11.java并发编程的艺术-java并发编程实践
    10.java并发编程的艺术-Executor框架
    9.java并发编程的艺术-java中的线程池
    8.java并发编程的艺术-java中的并发工具类
    Java并发编程的艺术-java中的13个原子操作类
    6.java并发容器和框架——Fork/Join框架
    6.java并发容器和框架——Java中的阻塞队列
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2893547.html
Copyright © 2011-2022 走看看