2013-07-11 21 views
2

我假设#地区被忽略,编译器下降,那么,为什么它是一个预处理指令,而不是某种评论结构(如//地区名称:东西(); // ENDREGION NAME什么的。)是否有一个作出指令的决定的具体原因是什么?为什么#地区是指令而不是评论?

回答

1

我知道这不是一个直接的答案,但仅此而已是如何布局的C# Language Spec(§2.5)。

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

我不认为它是由编译器忽略,它只是不产生任何影响。从词汇处理的角度来看,它仍然被认为是一个条件汇编,因此也符合一些其他的预处理指令。从规格:

一个区域的词法处理:

#地区

...

#endregion

正好对应于一个条件编译的词法处理形式的指令:

#如果真

...

#ENDIF