C# “\[…]”是有效的标识符吗?

C# “\[…]”是有效的标识符吗?,c#,asp.net,.net-4.5,httpapplication,C#,Asp.net,.net 4.5,Httpapplication,我刚刚从Microsoft安装了.NET 4.5参考源代码,因为我正试图调试我看到的一个问题,我在HttpApplication.cs中偶然发现了以下内容 // execution step -- call asynchronous event internal class AsyncEventExecutionStep : IExecutionStep { private HttpApplication _application; private BeginEvent

我刚刚从Microsoft安装了.NET 4.5参考源代码,因为我正试图调试我看到的一个问题,我在
HttpApplication.cs
中偶然发现了以下内容

// execution step -- call asynchronous event
internal class AsyncEventExecutionStep : IExecutionStep { 
    private HttpApplication     _application;
    private BeginEventHandler   _beginHandler;
    private EndEventHandler     _endHandler;
    private Object              _state; 
    private AsyncCallback       _completionCallback;
    private AsyncStepCompletionInfo _asyncStepCompletionInfo; // per call 
    private bool                _[....];          // per call 
    private string              _targetTypeStr;
注意最后一行的下一行
private bool[..];/每次通话

\uu[..]
是有效标识符(在任何编译级别,包括IL)还是编译后源代码已更改?

否;那是无效的

在发布源代码之前,微软使用了一个写得很差的内部工具,将所有员工姓名替换为
[…]

不幸的是,该工具也替换了实际的源代码

这实际上适得其反;通过查看编译后的元数据(例如,在Reflector中),您可以发现大部分隐藏源实际上是什么


您的特定行应该是
private bool\u sync

虽然@SLaks answer很可能是正确的,但需要注意的是,这是IL级别的潜在有效标识符,ECMA 335 Partition II第5.3节规定:

[T] ILAsm语法允许使用任何可以使用Unicode字符集形成的标识符(参见分区I)。为了实现这一点,标识符应放在单引号内

以下是在控制台上打印为False的完全有效的IL:

.assembly 'ValidIDTest'
{
}

   .class public TestClass
   {
    .field static public bool '_[...]'

    .method static void Main() cil managed
    {
        .entrypoint
        ldsfld bool TestClass::'_[...]'
        call void [mscorlib]System.Console::WriteLine(bool)
        ret    
    }
   }

显然不是,或者你没有试过编译它吗?编译器假定它是无效的数组声明。您无法编译它,因为引用源未附带解决方案文件。我很确定它在用户land C#中不是一个有效的标识符,但我知道编译器会生成你或我无法在Visual Studio中编写的类名等,因此会询问它在任何编译级别(包括IL)上是否有效。@Bobson MS会对引用源进行一些清理,主要与注释有关。我猜他们的清洁器“清理”得太多了。@GregB因为引用源不是反编译器的输出,所以IL中的相关内容对它来说并不重要。你的意思是,John Foo在MS?开始工作后,代码就不可读了@igrimpe:我相信它只对用户名起作用……所以某人的用户名是
\u sync
?这里希望没有人接受
int
System
。@JacobAbrahams:no;只需
同步
。(未删除
)。而且,是的。@igrimpe似乎是相关的。@SLak的答案是正确的。这个问题在so上至少出现过两次,并且至少有一次被一位能够使用该工具的微软员工回答过,但我太懒了,没法找到他们。