首页 > 编程语言 >c#的预编译指令

c#的预编译指令

时间:2022-12-15 19:04:29浏览次数:55  
标签:语句 定义 符号 c# 代码 编译 指令

C#预处理器指令是在编译时调用的。预处理器指令(preprocessor directive)告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。C#预处理器指令还可以告诉C#编辑器有关代码组织的信息。

1. 定义符号和取消符号定义的预处理指令#define 和 #undef

预处理指令都以#号开头并位于行首前面可以出现空格符。

#define DEBUG
#define ISSAY

上面的语句定义了连个个预编译的符号,他的作用域是他所处整个文件,定义符号的语句必须出现在所有代码之前, 否则编译的时候会出现一个异常: 不能在文件的第一个标记之后,定义或取消定义预处理器符号

#define DEBUG
#undef DEBUG
#define ISSAY

using
namespace
{
class
{
static void Main(string[] args)
{
#if DEBUG
"debug.");
#endif
#if ISSAY
"hello.");
#else
"you can say nothing.");
#endif

Console.ReadLine();
}
}
}
//输出:hello

从上面的代码我们可以看到第一样等一了符号DEEBU,紧接着第二行取消了这个符号的定义,也就是相当于没有定义一样,所以程序运行的时候不会执行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后面的说明文字。

引用网址:​​http://www.laoney.net/post/2009/03/10/200903102330237455.aspx​

我的补充:#elif   来源于:​​http://msdn.microsoft.com/zh-cn/support/88td0y52.aspx​

作者:沐雪
​​​ 为之网-热爱软件编程 http://www.weizhi.cc/​



标签:语句,定义,符号,c#,代码,编译,指令
From: https://blog.51cto.com/u_15162401/5945672

相关文章

  • UMLChina参与制作过的书
    2002-2010年间UMLChina参与制作过的书,可惜现在不做了。《人月神话》《人月神话》(注释版)《人件》《最后期限》《代码之美》《UML参考手册2.0》《UML风格》《系统分析师UML实......
  • service.Close() 问题
    我在用WCF做邮件服务的时候,客户端在发送完命令后,需要加service.Close();不然在连续10次发送信息到WCF服务器,滴10次以后就发不出去了。MyEmailSend.EmailSendServiceClie......
  • UMLChina答疑记录20160521更新
    因篇幅所限,以下仅是部分问题标题,更多内容请访问http://www.umlchina.com/qa/Index1.htm或点击“查看原文”业务建模• 兼职用工的业务建模(2016/5/15) • 组织架构图和鱼刺......
  • 音频变速 | libsonic 开源库的介绍与实践
    在做音视频编辑的时候,大家关注更多的是视频开发,热衷于FFmpeg、OpenGL这些技巧,实际上音频开发也是很重要的,甚至可以说音频开发比视频开发更难一点。对音频的常见处理就是变......
  • 一:OEL6.9x64 安装Oracle11gR2
    标签(空格分隔):Oracle系列一:系统环境介绍系统:oraclelinux6.9x64主机名:cat/etc/hosts----172.16.10.41flyfish41172.16.10.42flyfis......
  • Docker 安装 gitlab
    docker搭建gitlab私服:镜像获取:dockerpullgitlab/gitlab-ce:latest运行镜像:dockerrun-d-uroot--name=gitlab-p443:443-p9998:80-p222:22--restart=always......
  • Linux驱动的编译
    Linux驱动的编译http://t.zoukankan.com/magicdmer-p-4458369.html内核必须懂(四):撰写内核驱动https://www.imooc.com/article/283983linux指令make-C.....M=........
  • Docker 安装 Jenkins
    拉去镜像:dockerpulljenkins/jenkins:latest运行镜像:dockerrun-d--name=jenkins-p12000:8080-p50000:50000-v/root/jenkins:/var/jenkins_homejenkins/jenkins......
  • Linux 安装 Elasticsearch+kibana
    参考:Elasticsearch详解及部署https://www.cnblogs.com/cjzzz/p/16127324.html下载:https://www.elastic.co/cn/downloads/elasticsearch   或 https://www.elastic......
  • Linux 安装 Clickhouse
    下载:https://packagecloud.io/Altinity/clickhousewget--content-dispositionhttps://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-2......