C#预处理器指令
C#预处理器指令
C#预处理器指令一、C#预处理器指令可以用来
1、当计划发布两个版本的代码的时候。即基本版和拥有更多版本的企业版,就可以用到预处理器指令。
2、在编译基本版的时候,使用预处理指令会禁止编译器编译与额外功能相关的代码。
3、在编写提供调试信息的代码时,也可以使用预处理器指令。
二、C#常见的预处理器指令的功能
1、#define和#undef
例如
#define Debug
(1)、Debug可以看做是声明的一个变量,但此变量没有真正的值,仅存在。
(2)、#define单独用没什么意义,一般是和#if结合使用。
#undef Debug
删除 Debug 的定义
(1)、如果符号不存在,#undef 就没有任何作用。
(2)、如果符号已经存在,则#define 也不起作用。
(3)、必须把#define 和#undef 命令放在C#源文件的开头位置,在声明要编译的任何对象的代码之前。
2、#if、#elif、#else 和#endif
这些指令告诉编译器是否要编译某个代码块。
例如
//#define DebugA
#define DebugB
using System;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
#if DebugA
Console.WriteLine("Hello DebugA");
#elif DebugB
Console.WriteLine("Hello DebugB");
#else
Console.WriteLine("Hello Debugelse");
#endif
}
}
}
运行结果
说明
(1)、#elif(=else if)和#else指令可以用在#if中,和C#中的if,else if,else含义相同。
(2)、#if和#elif支持一组逻辑运算符"!","==","!="和"||",如果符号存在,则为true。
(3)、#if DebugB && DebugA //当Debug与DebugA同时存在才会执行
3、#warning 和 #error
当编译器遇到它们时,会分别产生警告或错误。如果编译器遇到#warning 指令,会给用户显示#warning 指令后面的文本,之后编译继续进行。如果编译器遇到#error 指令,就会给用户显示后面的文本,作为一条编译错误消息,然后会立即退出编译,不会生成IL 代码。 (和编译器的警告和错误意义类似)
例如
static void Main(string[] args)
{
#warning "All Right?"
Console.WriteLine("Contine...");
#error "All Right?"
Console.WriteLine("Contine...");
}
效果图
4、#region 和#endregion
用于把一段代码标记为有给定名称的一个块, 使得代码可以更好的布局
5、#line
用于改变编译器在警告和错误信息中显示的文件名和行号信息。
如果编写代码时,在把代码发送给编译器前,要使用某些软件包改变输入的代码,就可以使用这个指令,因为这意味着编译器报告的行号或文件名与文件中的行号或编辑的文件名不匹配。
也可以使用语法#line default 把行号还原为默认的行号
例如
#line 164 "Core.cs" // We happen to know this is line 164 in the file
// Core.cs, before the intermediate
// package mangles it.
// later on
#line default // restores default line numbering
6、#pragma warning
可以启用或禁用指定的编译警告。
例如
#pragma warning disable 169 public class MyClass { int neverUsedField; } #pragma warning restore 169
上面的例子禁止“字段未使用”警告,然后在编译MyClass 类后还原该警告
- C#正则表达式验证是否日期
- C#常用的命名规范
- C#文件读写的方法
- C#匿名类
- c#中list排序
- C# Checklistbox的用法
- C# Task实现多线程
- C#中typeof 与GetType()的区别
- c#中SqlBulkCopy的使用
- C#中List和数组之间的转换
- C#递归的应用
- C#中ArrayList与Array的区别
- C#中string.format的格式和用法
- C#冒泡排序
- C#获取页面的HTML
- C#中的反射
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
热门推荐
- Docker 运行多个Springboot的详细教程(Docker 运行多个Springboot的详细教程)
- mysql join规则(浅谈为什么MySQL不推荐使用子查询和join)
- 织梦cms怎么设置页面(织梦CMS调用问答栏目文章到首页实现方法分享)
- python列表的循环遍历使用教程(Python中使用遍历在列表中添加字典遇到的坑)
- 微信小程序如何请求服务器数据(微信小程序学习笔记之页面配置与路由方式)
- 将SQL Server数据迁移到MySQL的方法
- mysql事务级别设置(mysql在项目中怎么选事务隔离级别)
- mysql主从复制忽略问题(MySQL复制问题的三个参数分析)
- css垂直居中
- ubuntu如何搭建vnc(Ubuntu20.04 VNC 安装与设置实现)