Подтвердить что ты не робот

Является ли `_ [....]` действительным идентификатором?

Я только что установил исходный источник .NET 4.5 от Microsoft, поскольку я пытаюсь отладить проблему, которую я вижу, и я наткнулся на следующее в 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 _[....]; // per call.

Является ли _[....] допустимым идентификатором (на любом уровне компиляции, включая IL), или источник был изменен после компиляции?

4b9b3361

Ответ 1

Нет; это недействительно.

Перед выпуском источника Microsoft провела его с помощью плохо написанного внутреннего инструмента, который заменяет все имена сотрудников [....].
К сожалению, инструмент также заменяет реальный источник.

Это действительно контрпродуктивно; вы можете узнать, что большинство скрытого источника на самом деле было, просмотрев скомпилированные метаданные (например, в Reflector).

Ваша конкретная строка должна быть private bool _sync

Ответ 2

В то время как ответ @SLaks, скорее всего, правильный, важно отметить, что это потенциально допустимый идентификатор на уровне IL, ECMA 335 Partition II, раздел 5.3:

[T]. Синтаксис ILAsm позволяет использовать любой идентификатор, который может быть сформирован с использованием набора символов Unicode (см. раздел I). Для этого идентификатор должен быть помещен в одинарные кавычки.

Вполне допустимый IL, который выводит False на консоль:

.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    
    }
   }