【发布时间】:2015-10-26 19:54:56
【问题描述】:
为什么非关闭 #region 会导致编译器错误?毕竟,区域本身对编译后的代码绝对没有影响,对吧?
我相信这是因为它是一个预处理器指令,但这是为什么呢?毕竟它不像其他指令那样使用。
class Application
{
#region Whatever <- Causes an error.
static void Main(string[] c)
{
}
}
为什么不能忽略它?或者有什么我不知道的关于 #region 的功能解释了它为什么被编译?
编辑:我知道这个例子没有编译,因为没有对应的#endregion。但它不应该被视为 xml 注释中缺少的结束标记吗?我的意思是,它具有同样的重要性,不是吗?
第二次编辑:我希望了解使 #region 成为预处理器指令背后的设计决策。为什么不只是一种 IDE 会识别为可以折叠的代码区域的注释?
【问题讨论】:
-
它无法编译,因为预处理器期望某些东西在那里,但它找不到它,所以它出错了。你是对的,它没有修改代码,但是预处理器需要看到匹配的结束标记。
-
不,预处理指令的重要性与不匹配的 xml 注释标记非常不同。
-
@jrummell 实际上,在我看来,反之亦然。
-
但是 为什么 是预处理器,即使考虑到
#region标记,为什么它被创建为预处理器指令,而不仅仅是另一种注释? -
我没有一个好的答案,除了微软决定将其作为预处理器指令。我也很好奇。 msdn.microsoft.com/en-us/library/9a1ybwek.aspx