多语言展示
当前在线:627今日阅读:152今日分享:13

C#基础知识 - 什么是预处理()

C#编译器没有单独的预处理器,但描述的指令的处理方式与有预处理器时是一样的。 这些指令用于帮助条件编译。而不同于 C 和 C++ 指令,不能使用这些指令来创建宏。预处理器指令必须是一行中唯一的说明。
工具/原料

visual studio 2015

#warning、#error
1

#warning 允许从代码的特定位置生成 CS1030 第一级编译器警告。#warning 常用于条件指令中。 还可使用 #error 生成用户定义错误。示例效果:在程序运行过程中,可以正常运行,在错误列表中生成CS1030编译器警告

2

#error 从代码中的特定位置生成 CS1029 用户定义的错误示例效果:程序无法运行

#line

借助 #line,可修改编译器的行号及(可选)用于错误和警告的文件名输出。#line 20 'Special',即可改变下一行的行号为20,别名为'Special',开始计数。#line default,将行号恢复至默认行号,这会对上一指令重新编号的行进行计数。

#region、#endregion

利用 #region,可以在使用 Visual Studio Code 编辑器的大纲功能时可展开或折叠代码块。 在较长的代码文件中,能够折叠或隐藏一个或多个区域,对于编写代码十分便利。#region 块必须通过 #endregion 指令终止。

#pragma、#pragma warning、#pragma checksum
1

#pragma 为编译器给出特殊指令以编译它所在的文件。 这些指令必须受编译器支持,不可使用 #pragma 创建自定义处理指令。Microsoft C# 编译器支持以下两种 #pragma 指令:#pragma warning#pragma checksum

2

#pragma warning 可以启用或禁用特定警告。#pragma warning disable warning-list  #pragma warning restore warning-listdisable 会禁用所有警告,restore 会启用所有警告。以逗号分隔的警告编号的列表(“CS”前缀是可选的。)

3

[Obsolete('过期了',false)]  可以标记不再使用的程序元素,false为warningtrue为error

4

#pragma checksum生成源文件的校验和以帮助调试 ASP.NET 页面。Visual Studio 调试器使用校验和确保它可始终找到正确的源。 编译器为源文件计算校验和,然后将输出发出到程序数据库 (PDB) 文件。 调试器随后使用 PDB 针对它为源文件计算的校验和进行比较。class TestClass  {      static int Main()      {          #pragma checksum 'file.cs' '{406EA660-64CF-4C82-B6F0-42D48172A799}' 'ab007f1d23d9' // New checksum      }  } #pragma checksum 'filename' '{guid}' 'checksum bytes'  'filename' 需要监视更改或更新的文件的名称。'{guid}' 哈希算法的全局唯一标识符 (GUID)。  'checksum_bytes' 表示校验和字节的十六进制数字的字符串。 必须是偶数个十六进制数字。 奇数个十六进制数字会导致编译时警告出现,且指令遭忽略。

推荐信息