当在C#看到预处理指令这个概念时,感觉自己不是很理解,也不是很明白为什么在C#中要加入预处理指令这个东西。最后通过自己的看书和百度上的搜索自己也渐渐了预处理指令中的作用。下面我就浅谈一下我自己对预处理指令的理解吧。

     当一个程序正常执行的时候,编译器首先会执行预处理指令,然后再执行其它控制语句。虽然预处理指令不能像控制语句那样直接执行,但是它也是程序调试和运行的重要部分。关于预处理指令的官方解释是这样的:预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码的不同区域的能力。每种语言几乎都有预处理指令这个东西吧。只是有些语言的用法不同了。下面将C#中的一些预处理指令列出来。

预处理器指令    描述
#define    它用于定义一系列成为符号的字符。    //常用
#undef    它用于取消定义符号。    //常用
#if    它用于测试符号是否为真。    //常用
#else    它用于创建复合条件指令,与 #if 一起使用。
#elif    它用于创建复合条件指令。
#endif    指定一个条件指令的结束。
#line    它可以让您修改编译器的行数以及(可选地)输出错误和警告的文件名。
#error    它允许从代码的指定位置生成一个错误。
#warning    它允许从代码的指定位置生成一级警告。
#region    它可以让您在使用 Visual Studio Code Editor 的大纲特性时,指定一个可展开或折叠的代码块。    //常用
#endregion    它标识着 #region 块的结束。                     //常用

好了,上代码看看吧。

#define debug   
//定义了debug这个符号
using System;
namespace gg
{
    class one
    {
        #region 最大值函数   
        //这个预处理指令的作用是将一个程序块容纳起来,可以方便将程序块折叠起来
        public void  max(int x, int y)
        {
            if (x > y)
            {
                Console.WriteLine("The Max is {0}", x);
            }
            else
            {
                Console.WriteLine("The Max is {0}", y);
            }
        }
#endregion
    }
    class a
    {
        #region 入口函数
        //这个预处理指令的作用是将一个程序块容纳起来,可以方便将程序块折叠起来
        static void Main()
        {
            one a = new one();
#if (debug)
//如果debug被定义,就为真
            {
                a.max(3, 4);
                Console.ReadKey();
            }
#else
            {
                Console.WriteLine("hello world!!");
                Console.ReadKey();
            }
#endif
        }
        #endregion 函数的结束
    }
}