在 .Net 源代码(HttpApplication.cs)中,有一个奇怪的变量名(_[....])是什么意思?

6

我在浏览 .Net Framework 源代码以找到一个棘手的 bug(HttpApplication.cs),并且我注意到代码中有这样的行(这些是复制/粘贴,我没有编辑任何内容):

_[....] = true;

并且

_[....] = false;

我想知道这是否是混淆代码,还是一种我从未见过的C#约定?VS 2012似乎认为这不是真正的代码。

有人能给我指点吗?


字面上说是“....”,还是怎么样?不管怎样,它看起来很混淆。 - Ry-
文件顶部实际上有一个声明,private bool _[...]; - Malcolm O'Hare
如果这是一种混淆的尝试,那么它并不是很好,特别是当你有一个像 bool IExecutionStep.CompletedSynchronously { get { return _[....];} } 这样的方法,它会给出一个相当大的提示,说明它的作用。也许最初的变量被称为 async,然后有人进行了搜索和替换,将其替换为无效的变量名,只是为了看看会发生什么问题,然后忘记改回来了。 - sgmoore
@sgmoore 这怎么可能是混淆?这是源代码,不是编译后的二进制文件。 - ken2k
我99%确定这不是混淆,因为实体[....]在源文件中的注释中被引用。它似乎有一些近似于“同步处理”的含义(例如,在“非异步”情况下经常出现)。 - Michael Edenfield
显示剩余3条评论
3个回答

8

在实际的HttpApplication.cs代码中,该字段的名称为“_sync”。在源代码发布之前,有一个自动化工具对其进行处理,例如清除开发人员的姓名等。看起来这只是一个误报。我将与相关团队商讨是否可以更正。


1

这个特定的标记似乎出现在.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.[....];

0

1
@MalcolmO'Hare:微软可能会在其构建脚本中使用自定义预处理。 - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接