C#基础知识 - 什么是预处理()
1、#warning 允许从代码的特定位置生成 CS1030 第一级编译器警告。
#warning 常用于条件指令中。 还可使用 #error 生成用户定义错误。
示例效果:
在程序运行过程中,可以正常运行,在错误列表中生成CS1030编译器警告

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

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

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


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

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


3、 [Obsolete("过期了",false)] 可以标记不再使用的程序元素,
false为warning
true为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"
表示校验和字节的十六进制数字的字符串。 必须是偶数个十六进制数字。 奇数个十六进制数字会导致编译时警告出现,且指令遭忽略。
