我认为#region被编译器忽略并删除,所以为什么它是一个预处理器指令而不是某种注释结构(比如// REGION NAME:stuff(); // ENDREGION NAME等等。)是否存在决定将其作为指令的一个特殊原因是什么?
答案 0 :(得分:1)
我知道这不是一个直接的答案,但它是如何在C# Language Spec(§2.5)中列出的。
预处理指令提供了有条件的能力 跳过源文件的部分,报告错误和警告条件, 并描述源代码的不同区域。
我不认为编译器会忽略它,它只是没有任何效果。从词法处理的角度来看,它仍然被认为是一种条件编译,因此符合其他一些预处理指令。来自规范:
区域的词汇处理:
#region
...
#endregion
完全对应于以下形式的条件编译指令的词法处理:
#if true
...
#ENDIF