C#预处理指令

来源:互联网 发布:js创建一个数组 编辑:程序博客网 时间:2024/06/07 04:26

什么是预处理指令?

预处理指令可以按条件跳过相应不符合条件的代码进行编译。

预处理指令的用途:

当计划发布两个版本的代码时,如基础版和拥有更多功能的企业版,可以用到预处理指令。
在编译基本版的时候,使用预处理指令会禁止编译器编译与额外功能相关的代码。

#define指令

define指令,可以把它看做成声明一个变量。具体和代码中申明变量又有如下区别:

  • define指令必须在代码文件中的第一句。
  • 没有分号作为结束标记。
  • 单独使用是没有任何意义的,但是和#if #elif #else #endif一起使用就截然不同了。

具体用法:

#define Busing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication18{    class Program    {        static void Main(string[] args)        {        }    }}

#if #elif #else #endif 指令

这些指令就好比程序中的 if else 流程控制语句,只不过if else是在程序运行期间进行流程控制,而预处理指令将在程序编译期间就已经开始了,如用VS工具编写代码,将会看到代码呈现不同颜色。

#define Busing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication18{    class Program    {        static void Main(string[] args)        {#if A            Console.WriteLine("Hello");#elif B            Console.WriteLine("World");#else            Console.WriteLine("else");#endif        }    }}

具体用法如上述代码,我们可以删除代码第一句 define 或者将B改为A 可以看到程序将会打印不同的结果。

在当前代码(.cs)文件中定义#define才能有效,那么假设其他文件也要用到这个预处理变量,就很麻烦了,有没有全局性的呢?


有,可以在当前项目右键属性生成中设置,如要定义多个,用逗号隔开,具体看截图:
这里写图片描述

#region #endregion

这个不做过多介绍,代码折叠语句。用过VS的都知道

0 0