我在浏览 .Net Framework 源代码以找到一个棘手的 bug(HttpApplication.cs),并且我注意到代码中有这样的行(这些是复制/粘贴,我没有编辑任何内容):
_[....] = true;
并且
_[....] = false;
我想知道这是否是混淆代码,还是一种我从未见过的C#约定?VS 2012似乎认为这不是真正的代码。
有人能给我指点吗?
在实际的HttpApplication.cs代码中,该字段的名称为“_sync”。在源代码发布之前,有一个自动化工具对其进行处理,例如清除开发人员的姓名等。看起来这只是一个误报。我将与相关团队商讨是否可以更正。
这个特定的标记似乎出现在.NET参考源代码的各个地方。它更常用于注释而不是作为变量,但HttpApplication.cs
并不是唯一出现它的地方(例如WeakKeyDictionary
将其用作lock
目标)。
在许多情况下,它是单词“sync”的同义词,例如:
InstancePersistenceContext.cs:1586: Fx.AssertAndThrowFatal(this.context.Active,
"Out-of-[....] between InstanceExecutionContext and ExecutionAsyncResult.");
EditModeSwitchButton.cs:64: // [....] to the owning PropertyContainer only if requested to do so
而我最喜欢的是来自一个已过时的 System.Web.Mobuile
类:
TemporaryBitmapFile.cs: private void [....]()
我最好的猜测是它来自于源代码发布给公众之前的预发布步骤(在我找到的每个参考源代码副本中都出现,但不包括一段时间前发布的SSCLI。例如,比较RemotingProxy.cs:222
:
SSCLI: int callType = Message.Sync;
RefSec: int callType = Message.[....];
你说得对,源代码包括一个名为_[....]
的布尔变量。我猜这个变量的名称可能在编写代码时没有决定好,后来忘记修复了。
private bool _[...];
。 - Malcolm O'Hare