预处理指令

C#预处理指令基本概念

虽然同C和C++的术语“预处理指令”名称1样,但C#的其实并没有单独的预处理步骤,也就是说在VS等环境中并没有预处理的编译器。

预处理指令能够用于替换源文件中的信息。以#(Sharp)字符和预处理指令名称开头。例如:

#define MAX

习惯于将预处理指令的名称全部设为大写。和C与C++不同的是,C#中的预处理指令的名称后不加数字等。CC++所支持的宏函数在C#中也是不支持的。

还可使用#region来设置1个区域,同时也能够通过Visual Studio让代码折叠。常常在#region后加上该区域的名称的字符串,可以实现注释的作用。

#region C#预处理指令
#endregion

5个预处理指令

1.#undef

上面我们使用了#define,其实还是有#undef的。那末它又是做甚么的呢?

#define MAX
static void Main(string[] args)
{
#if (MAX)
Console.WriteLine("MAX已定义了。");
#endif
}

如果我们Debug程序,就会在控制台看到这样1条:

MAX已定义了。

如果我们Release程序,得到的结果也还是1样的,但是如果在代码开头加上:

#undef MAX

再来Debug控制台就不会有消息提示了。

2.#if、#else、#elif

如果想要控制台显示MAX没有定义的情况,那就用#else来搭配#if就能够了。

#if (MAX)
Console.WriteLine("MAX已定义了。");
#else
Console.WriteLine("MAX还没有定义。");
#endif

也许你在键入#else的时候也看到了#elif,这个自然就是对应的else if了。它们的逻辑和常规的if套装是1样的。

#define MAX
#undef MAX
#define MIN

static void Main(string[] args)
{
#if (MAX)
Console.WriteLine("MAX已定义了。");
#elif (MIN)
Console.WriteLine("MIN已定义了。");
#else
Console.WriteLine("MAX还没有定义。");
#endif
Console.ReadLine();
}

3.#warning、#error

这两个预处理指令用于抛出异常和毛病。

#warning 这是1个强迫抛出的异常。

这里写图片描述

#error 这是1个强迫抛出的毛病。

这里写图片描述

4.#line

我们还可以用#line将以下#error这行代码的行数设置为10000行,并将文件名设置为”毛病“。

static void Main(string[] args)
{
#line 10000 "毛病"
#error 这是1个强迫抛出的毛病。
}

这里写图片描述

如果我们再添加这样1行代码,则会将行数和文件名恢复为默许的。

#line 10000 "Error"
#error 这是1个强迫抛出的毛病。
#line default
#warning 这是1个强迫抛出的正告。

这里写图片描述

5.#pragma

我们先在Program类前加上这样1行代码,它会引发CS3021毛病。

[CLSCompliant(false)]

然后我们在上面这行代码前加入以下这行代码,其作用是禁用warning 3021。那末再次Debug就会发现本来的毛病已不在了。

#pragma warning disable 3021

如果想要在后文中恢复这个CS3021毛病,就用restore便可。

#pragma warning restore 3021

以下是完全代码。

#pragma warning disable 3021
[CLSCompliant(false)]
class Program
{
static void Main(string[] args)
{}
}
#pragma warning restore 3021
[CLSCompliant(false)]
public class OtherProgram
{
public static void OtherMain()
{}
}

这个预处理指令实际上是非常复杂的,在各大百科上已有了相干介绍,以下是维基百科上的。传送门:pragma once。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 预处理指令

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡