前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C Sharp(十七)

C Sharp(十七)

作者头像
1ess
发布2021-11-01 13:48:36
6570
发布2021-11-01 13:48:36
举报
文章被收录于专栏:0x7c00的专栏0x7c00的专栏

C Sharp(十七)

發佈於?2018-12-04

这一篇,介绍一些 C# 中的比较常见的预处理指令。

C 和 C++ 都有实际的预处理阶段,而在 C# 中是没有的,预处理指令是由编译器来处理。 在 Objective-C 中预处理指令也特别常用。

基本规则

下面是预处理指令的主要规则:

  • 预处理指令必须与 C# 代码处于不同行
  • 包含预处理指令的行必须以 # 开头
    1. # 字符前可以有空格
    2. # 字符与预处理指令之间可以有空格
  • 允许行尾有单行注释,不可以有多行注释

#define 和 #undef 指令

编译符号是只有两种状态的标识符。要么被定义,要么未被定义。 编译符号有如下特性:

  • 可以是除了 true 和 false 之外的任何标识符,包括 C# 关键字,以及在 C# 中声明的标识符
  • 他没有值,与 C 不同,他不表示字符串

#define 指令声明一个编译符号,#undef 指令取消声明一个编译符号。

代码语言:javascript
复制
#define PremiumVersion
#define EconomyVersion
...

#undef PremiumVersion

注意: #define 和 #undef 指令只能用于任何 C# 代码之前,在 C# 代码开始之后,这两个指令就都不可以使用了。

代码语言:javascript
复制
using System;
#define PremiumVersion    //错误,必须出现在所有 C# 代码之前

namespace Eagle
{
    #define PremiumVersion    //错误
}

重复定义编译符号也是允许的。

条件编译

条件编译允许我们根据某个编译符号是否被定义来标注一段代码被编译或跳过。 有4个指令用来指定条件编译:

  • #if
  • #else
  • #elif
  • #endif

如下:

代码语言:javascript
复制
#if PremiumVersion
...
#endif

#if (PremiumVersion && LeftHanded)
...
#endif

#if true  //总被编译
...
#endif

条件编译的结构

如下:

代码语言:javascript
复制
#if Cond1
...
#elif Cond2
...
#elif Cond3
...
#endif

#if Cond1
...
#else
...
#endif

诊断指令

下面是诊断指令的语法,注意与 C# 普通字符串不同,Message 无需引号包裹:

代码语言:javascript
复制
#warning Message
#error Message

区域指令

区域指令允许我们命名一段代码,#region 指令特性如下:

  • 放置在希望标注的代码段之上
  • 在该指令后放置可选字符串作为名字
  • 之后的代码由 #endregion 指令终止

VisualStudio 可以显式和隐藏由区域指令包裹的代码段。

代码语言:javascript
复制
#region Constructor
public MyClass()
{

}

public MyClass(string s)
{

}
#endregion

#pragma warning

该指令允许我们关闭和开启警告信息:

代码语言:javascript
复制
#pragma warning disable 618, 414
...

#pragma warning restore 618
本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本规则
  • #define 和 #undef 指令
  • 条件编译
  • 条件编译的结构
  • 诊断指令
  • 区域指令
  • #pragma warning
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com