Какова цель открытого поля "value__", которое я вижу в Reflector против моего enum? - PullRequest
4 голосов
/ 07 марта 2011

Я смотрю на перечисление, которое я создал в Reflector, и есть открытое целочисленное поле с именем "value __".

Какова цель этого члена?

Ссылка или ссылка надокумент подходит для ответа.

Поиск в Google - это боль, потому что "value__" возвращает хиты для "value".

Я искал почти час и нашел только ссылки ниже.Большинство из них - одна и та же статья на разных сайтах.Все они показывают, как получить доступ к члену с помощью рефлексии, но никто из них не объясняет, для чего этот член.

ОБНОВЛЕНИЕ

Последняя ссылка ниже обсуждается (навнизу) что вы не можете использовать значение__ в качестве значения перечисления, поскольку оно зарезервировано, но не говорит, почему.

http://www.vijaymukhi.com/documents/books/csadv/chap3.htm

Ошибка компилятора

ошибкаCS0076: имя перечислителя 'value__' зарезервировано и не может использоваться ... Только для перечисления это не позволяет нам использовать зарезервированное слово value__, поскольку оно должно использовать то же самое слово для внутреннего отслеживания перечисления.

ОБНОВЛЕНИЕ 2

Ссылка ниже на страницу MSDN, которая для ошибки компилятора, которая также говорит "value__", зарезервирована.Но все равно нет радости узнать, что делает член ...

http://msdn.microsoft.com/en-us/library/e3988xhs(v=vs.71).aspx

1 Ответ

8 голосов
/ 07 марта 2011

JIT-компилятору требуется определение типа значения, которое описывает его макет, когда он упакован. Большинство из них запекаются в mscorlib, как System.Int32. Ключевое слово enum позволяет вам создать новый тип значения. Таким образом, компилятор должен предоставить определение для этого в метаданных. На что ты смотришь. Вы увидите статические поля для каждого члена перечисления, используемые ToString (). И одно имя поля экземпляра value__, в котором хранится значение перечисления. Ключевым моментом является то, что это существует только в коробочной версии значения перечисления.

...