【C#基础】C#预处理器指令

来源:互联网 发布:广东省云计算应用协会 编辑:程序博客网 时间:2024/06/07 15:51

本文参考书籍:《C#高级编程》。


1、#define 和 #undef

#define 的用法如下:

#define DEBUG

这句代码必须放在程序的开头,在using语句之前

它告诉编译器存在给定名称的符号,类似一个变量,但是没有值。个人理解为一个标志位。它不是实际代码的一部分,只在编译器编译代码时存在。在C#
代码中它没有任何意义。

#undef 正好与它相反,是用来删除一个符号的定义
#undef  DEBUG


如果DEBUG这个符号不存在,这句代码没有意义,如果存在则#define定义的DEBUG没有意义了。

由于没有意义,所以使用的时候一般是结合下面的预处理器指令一起使用的



2、#fi、#elif、#else、#endif


这些指令是告诉编译器是否要执行下面的一些代码。

例子:
        static void Test()        {            string s = "have debug";#if DEBUG             Console.WriteLine("have debug");#endif        }

前面我们定义了DEBUG,所以会输出一句“have debug”。


在实际中应用的时候(这里特指unity3d程序),如:

#UNITY_EDITOR//do something#UNITY_ANDROID//do something#UNITY_IPHONE//do somethin#endif


每一个这样的预编译器指令都必须用endif结尾。
上面的代码表示在编译代码的时候,检测程序所处的运行环境,然后依据这个执行相应的代码。


3、#warming、#error


如果编译器遇到#warming语句会给用户显示#warming之后的文本,并继续执行代码
如果编译器遇到#error语句则会给用户显示#error之后的文本,并停止执行,退出程序。如:

        static void Test()        {            string s = "have debug";#if DEBUG #warning "you've defing a DEBUG"            Console.WriteLine("have debug");#error "stop"#endif        }

“stop”会出现红色下划线并去程序不能运行。


4、#region、#endregion


用于折叠代码块。


5、#line


用来定义错误的行号。


6、#pragma

用来抑制或还原指定的编译警告。与命令行选项不同,#pragma指令可以在类或者方法级别执行,对抑制警告的内容和抑制的时间进行更精细的控制。如:
#pragma warning disable 78        static void Test()        {            int index;        }#pragma warning restore 78


更多的详细内容请参考:http://www.cnblogs.com/mq0036/p/6367931.html


原创粉丝点击