为什么#region是指令而不是评论?

时间:2013-07-11 00:55:30

标签: visual-studio language-design

我认为#region被编译器忽略并删除,所以为什么它是一个预处理器指令而不是某种注释结构(比如// REGION NAME:stuff(); // ENDREGION NAME等等。)是否存在决定将其作为指令的一个特殊原因是什么?

1 个答案:

答案 0 :(得分:1)

我知道这不是一个直接的答案,但它是如何在C# Language Spec(§2.5)中列出的。

  

预处理指令提供了有条件的能力   跳过源文件的部分,报告错误和警告条件,   并描述源代码的不同区域。

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

  

区域的词汇处理:

     

#region

     

...

     

#endregion

     

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

     

#if true

     

...

     

#ENDIF