- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为什么非闭合 #region
会导致编译器错误?毕竟,区域本身对编译后的代码绝对没有影响,对吧?
我相信这是因为它是一个预处理器指令,但为什么呢?毕竟它不像其他指令那样使用。
class Application
{
#region Whatever <- Causes an error.
static void Main(string[] c)
{
}
}
为什么不能忽略它?或者是否有一个我不知道的关于 #region
的特性解释了它被编译的原因?
编辑:我知道这个例子不能编译,因为没有对应的#endregion
。但它不应该被视为 xml 注释中缺少的结束标记吗?我的意思是,它具有同样的重要性,不是吗?
第二次编辑:我希望了解将 #region
设为预处理器指令背后的设计决策。为什么不只是一种 IDE 会识别为可以折叠的代码区域的注释?
最佳答案
Why does a non-closing #region causes a compiler error?
因为 specs这样说的。
A #region block must be terminated with a #endregion directive.
是的,它们不会成为编译程序的一部分,但其他预处理器指令可以定义,什么必须成为程序的一部分,例如 #if DEBUG
(包括一些东西)。
Pre-processing directives are not tokens and are not part of the syntactic grammar of C#. However, pre-processing directives can be used to include or exclude sequences of tokens and can in that way affect the meaning of a C# program.
针对您的问题:
But why is the preprocessor even considering the #region tag, why was it created as a preprocessor directive and not just another kind of comment?
区域对于 IDE (Visual Studio) 用途很有帮助,(如果不是不可能的话) 很难在没有区域的情况下实现折叠/展开代码的相同功能。 (这是我的猜测,只有 Microsoft 开发团队的成员可以回答这个问题)
No semantic meaning is attached to a region; regions are intended for use by the programmer or by automated tools to mark a section of source code. The message specified in a #region or #endregion directive likewise has no semantic meaning; it merely serves to identify the region. Matching #region and #endregion directives may have different pp-messages.
关于c# - 为什么#region 会产生编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33354461/
我正在运行一个带有两个 HBase 0.94.7 区域服务器的小型集群。我发现区域服务器上的负载请求非常不平衡。从网络用户界面,我得到: Region1: numberOfOnlineRegions
我在 Backbone.Marionette 中有一个非常复杂(?)的布局,其中一些区域放置在 MainRegion 中。所有这些都是 CollectionView 的一部分,因此无法通过 var 直
我正在从事这样一个项目,其中应用程序执行以下操作: 用户选择一个半径(10 米到 1000 米),然后按“Go”按钮转到下一个 viewController 这里的应用程序抓取用户当前位置,并根据当前
我使用一个区域和两个 View 。我有一个 ComboBox,让用户可以选择区域中的 View 。 我有两个问题: 第一个问题是: _regionManager.Regions.Add("MyRegi
enter image description here 我正在按照MVVM模式使用WPF开发Prism Sample应用程序,但是当它通过以下代码时,它在我的应用程序中存在一些问题: var vie
根据Formatting Object documentation region-start( body 左侧的区域)跨越 之间 region-before(页眉)和 region-after(页脚)
我试图在 region-before 和 region-body 之间留出 10mm 的空间。但我无法将其与 regin-before 的大小相关联。 边界应该是这样的。使用单线“Bemerkung”
我正在伦敦地区的 AWS beanstalk 平台上部署 Spring boot 应用程序,但出现错误:- “无法实例化 [org.springframework.cloud.aws.core.reg
运行 vagrant 命令时出现如下错误, # vagrant up --provider=aws 这台机器的配置有错误。请修复以下错误并重试: AWS 提供商:* AMI 必须通过“ami”配置(
这实际上是三个不同的概念还是我混淆了? (我一直在阅读有关线程和垃圾收集的文章,但我自己也很困惑。) “关键部分” - 我认为这可能只是您不希望多个线程同时访问的代码部分的术语,即在 lock 和 M
我运行的是 Windows 10。当我从开始菜单中打开“区域和语言设置”时,我可以选择“国家或地区”。我试图在 C# 程序中获取此值。 我在丹麦。我曾尝试将我的国家/地区更改为德国(请参阅 scree
我是 javascript 新手,正在学习如何将新内容添加到现有 html 中。在下面的代码中,我尝试计算 DOM 中 li 的数量,并将总数显示到现有的 h2 元素。 我原以为结果是Region 6
我知道还有其他相同的问题,但他们没有解决我的问题。 我不断收到错误:Aws::Errors::MissingRegionError in BooksController#create, 缺少区域;使用
尝试使用 aws s3 java api 创建 AmazonS3ClientBuilder 对象并收到错误 按照这个例子: https://docs.aws.amazon.com/code-sampl
我使用 Rails 4.1 和 Postgresql(带有 PG gem)作为我的数据库。我有一个非常多的协会,从公司到省,有一个称为区域的连接表。现在显然区域表没有主键,因为我使用了 { :id =
我是一名优秀的程序员,十分优秀!