zoukankan      html  css  js  c++  java
  • C#编程(十)----------C#预处理器

    原文链接:http://blog.csdn.net/shanyongxu/article/details/46491757

    C#中的预处理器指令

    #IF

    如果 C# 编译器遇到最后面跟有 #endif 指令的 #if 指令,则仅当指定的符号已定义时,它才会编译这两个指令之间的代码。
    C# 中的 #if 语句是 Boolean,仅测试符号是否已定义。
    运算符 &&(与)和 ||(或)可用来评估多个符号是否已定义。 还可以用括号将符号和运算符分组。
    结合使用 #if 与 #else、#elif、#endif、#define 和 #undef 指令,可以根据一个或多个符号是否存在来包含或排除代码。在编译调试版本的代码或针对特定配置进行编译时,这会很有用。
    以 #if 指令开始的条件指令必须用 #endif 指令显式终止。

    #Else

    #else 允许您创建复合条件指令,因此,如果前面的 #if 或(可选)#elif 指令中的任何表达式都不为 true,则编译器将计算 #else 与后面的 #endif 之间的所有代码。

    #Elif

    #elif 使您得以创建复合条件指令。如果前面的 #if 和前面的任何 #elif(可选)指令表达式的计算结果都不是 true,则将计算 #elif 表达式。如果 #elif 表达式计算为 true,编译器将计算位于 #elif 和下一个条件指令之间的所有代码。
    使用 #elif 更简单,因为每个 #if 都需要一个 #endif,而 #elif 即使在没有匹配的 #endif 时也可以使用。

    #Endif

    #endif 指定以 #if 指令开头的条件指令的结尾

    #Define

    #define 可让您定义符号。 当您将符号用作传递给 #if 指令的表达式时,此表达式的计算结果为 true

    注意:不能像在 C 和 C++ 中的通常做法一样,使用 #define 指令来声明常数值。最好是将 C# 中的常数定义为类或结构的静态成员。如果具有多个像这样的常数,可以考虑创建一个单独的“Constants”类来保存这些常数。

    例如:

    #define DEBUG 
    #define VC_V6 
    using System; 
    public class MyClass 

       public static void Main() 
       { 

          #if (DEBUG && !VC_V6) 
             Console.WriteLine("DEBUG is defined"); 
          #elif (!DEBUG && VC_V6) 
             Console.WriteLine("VC_V6 is defined"); 
          #elif (DEBUG && VC_V6) 
             Console.WriteLine("DEBUG and VC_V6 are defined"); 
          #else 
             Console.WriteLine("DEBUG and VC_V6 are not defined"); 
          #endif 
       } 

    如上所示:由于DEBUG 和 VC_V6 都定义了,所以,高亮代码执行.其他代码不执行.

    #Undef
    #undef 使您可以取消符号的定义,以便通过将该符号用作 #if 指令中的表达式,使表达式的计算结果为 false。

    #define DEBUG

    #undef DEBUG

    using System

    class MyTest

    {

    static void Main()

    {

    #if DEBUG

    Console.WriteLine(“DEBUG is defined”);

    #else

    Console.WriteLine(“DEBUG is not defined”);

    #endif

    }

    }
    运行结果为:DEBUG is not defined

    #Warning
    #warning 使您得以从代码的特定位置生成一级警告。 例如:

    #define DEBUG

    class MainClass

    {

        static void Main()

        {

    #if DEBUG

    #warning DEBUG is defined

    #endif

        }

    }

    #Error 

    #error使您可以从代码中的特定位置生成错误。例如:

    #define DEBUG

    class MainClass

    {

        static void Main()

        {

    #if DEBUG

    #error DEBUG is defined

    #endif

        }

    }

    #Region

    #region 是大家最为熟悉的指令,它使您可以在使用 Visual Studio 代码编辑器的大纲显示功能时指定可展开或折叠的代码块。 在较长的代码文件中,能够折叠或隐藏一个或多个区域会十分便利,这样,您可将精力集中于当前处理的文件部分。 下面的示例演示如何定义区域:

    #region MyClass definition

    public class MyClass

    {

        static void Main()

        {

        }

    }

    #endregion

    #region 块必须以 #endregion 指令终止。
    #region 块不能与 #if 块重叠。但是,可以将 #region 块嵌套在 #if 块内,或将 #if 块嵌套在 #region 块内。

    #endregion

    #endregion 标记 #region 块的结尾

     
  • 相关阅读:
    CentOS虚拟机和物理机共享文件夹实现
    集训第六周 数学概念与方法 概率 数论 最大公约数 G题
    集训第六周 数学概念与方法 概率 F题
    集训第六周 E题
    集训第六周 古典概型 期望 D题 Discovering Gold 期望
    集训第六周 古典概型 期望 C题
    集训第六周 数学概念与方法 UVA 11181 条件概率
    集训第六周 数学概念与方法 UVA 11722 几何概型
    DAG模型(矩形嵌套)
    集训第五周 动态规划 K题 背包
  • 原文地址:https://www.cnblogs.com/android-blogs/p/6437196.html
Copyright © 2011-2022 走看看