博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#预处理器指令
阅读量:5010 次
发布时间:2019-06-12

本文共 1743 字,大约阅读时间需要 5 分钟。

C#预处理器指令是在编译时调用的。预处理器指令(preprocessor directive)告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。C#预处理器指令还可以告诉C#编辑器有关代码组织的信息。1. 定义符号和取消符号定义的预处理指令#define 和 #undef预处理指令都以#号开头并位于行首,前面可以出现空格符。#define DEBUG#define ISSAY上面的语句定义了一个预编译的符号,他的作用域是他所处的整个文件,定义符号的语句必须出现在所有代码之前, 否则编译的时候会出现一个异常: 不能在文件的第一个标记之后,定义或取消定义预处理器符号 。我们也可以使用#undef来取消一个符号的定义,先来看个例子。复制代码#define DEBUG#undef DEBUG#define ISSAY using System;   namespace JustDoIt   {   class Program        {   static void Main(string[] args)            {             #if DEBUG              Console.Write("debug.");             #endif             #if ISSAY              Console.Write("hello.");         #else              Console.Write("you can say nothing.");             #endif          Console.ReadLine();            }        }   }   //输出:hello复制代码从上面的代码我们可以看到第一行定义了一个符号DEBUG,紧接着第二行取消了这个符号的定义,也就是相当于没有定义一样,所以程序运行的时候不会执行Console.Write("debug.")这个语句。第三行定义了ISSAY符号,所以程序输出了“hello”,如果我们把他注释了或者是删除了,那么程序会输出“you can say nothing“。我们可以初步看到通过定义预编译的符号,可以控制编译器选择性地编译代码。上面的代码中还有#if和#endif这样的符号,这些是条件编译指令。2. 条件编译指令条件编译指令有4个,除了我们从第一个示例看到的#if、#else、#endif之外,还有一个#elif。我们对这些指令应该有是曾相识的感觉,他们跟我们平时编写代码的时候试用的条件语句是一样的,条件语句是用来控制程序流的,而这些条件编译指令是用来控制编译器选择性地编译代码的。一条#if语句可以有0条或多条#elif语句,也可以有0条或一条#else 语句,但必须包括一条#endif语句必须有,否则会出现语法错误。3. #region和#endregion这两个符号平时我们肯定用的很多了,就是把一些相关的代码折叠到一起,这样对我们在一个文件中编写较长的代码非常有用,我们可以把一组相关的代码用#region和#endregion组织在一起并且可以在#region后面加上说明的文字,当这组代码被折叠起来的时候,我们可以看到#region后面的说明文字。  MSDN上的 C# 预处理器指令 介绍Visual Studio 2013MSDN本节包含有关以下 C# 预处理器指令的信息。#if#else#elif#endif# define#undef#warning#error#line#region#endregion#pragma#pragma warning#pragma checksum请参见各个主题有关更多信息和示例。虽然编译器没有单独的预处理器,本节中介绍的处理指令,就象一个。 它们在条件编译用于帮助。 与 C 和 C++ 指令不同,不能使用这些指令创建宏。预处理器指令必须是行上的唯一指令。好文要顶 关注我

  

转载于:https://www.cnblogs.com/profession/p/8966614.html

你可能感兴趣的文章
Save (Not Permitted) Dialog Box
查看>>
装饰模式(Decorator)
查看>>
任务13:在Core Mvc中使用Options
查看>>
利用Excel 2010数据透视图实现数字的可视化的图形直观展示
查看>>
Sort Colors
查看>>
iview树的修改某个节点,树刷新后自动展开你刚才展开的所有节点
查看>>
oracle服务起不来以及无法监听问题解决
查看>>
Mvc--Html.ActionLink()的用法
查看>>
delphi 基础书籍推荐
查看>>
《面向对象程序设计》2018年春学期寒假及博客作业总结
查看>>
iOS开发UI之KVC(取值/赋值) - KVO (观察某个对象的某个属性的改变)
查看>>
1.7 将一个MxN矩阵所有为0的元素所在行和列全部置0
查看>>
删除U盘时提示无法停止‘通用卷’设备的解决方法!!不要每次都硬拔了,对电脑有不小的损害!!!...
查看>>
Java中接口与接口和类之间的关系
查看>>
芯片TPS70925
查看>>
linux shell 发送email 附件
查看>>
人群密度估计 CrowdCount
查看>>
JSON.parse()和JSON.stringify()
查看>>
.net 常用正则表达式
查看>>
Java泛型中的标记符含义:
查看>>