2

我假设#region 被编译器忽略并丢弃,那么为什么它是预处理器指令而不是某种注释结构(例如 //REGION NAME: stuff(); //ENDREGION NAME 或其他东西。)是否有特殊原因做出将其作为指令的决定?

4

1 回答 1

1

我知道这不是一个直接的答案,但这就是它在C# 语言规范(第 2.5 节)中的布局方式。

预处理指令提供有条件地跳过源文件部分、报告错误和警告条件以及描绘源代码的不同区域的能力。

我认为编译器不会忽略它,它只是没有任何效果。从词法处理的角度来看,它仍然被认为是条件编译,因此与其他一些预处理指令一致。从规范:

区域的词汇处理:

#地区

...

#endregion

完全对应于以下形式的条件编译指令的词法处理:

#如果真实

...

#万一

于 2013-07-11T01:27:32.807 回答