Внутренне перечисление очень похоже на struct
с одним внутренним полем - с тем же типом, что и базовый тип для перечисления (здесь int
)), который сохраняет значение ,
Это все, что касается перечисления. Он не имеет никакого хранилища ни для чего другого - он не знает , как он был создан - будь то с использованием именованного значения из перечисления, или путем литья из базового типа или любого другого средства.
Таким образом, когда вы запрашиваете строковое представление, у него больше нет информации, чем для принятия числового значения и попытки найти имя среди его элементов перечисления, которое соответствует этому значению.
Я не уверен, будет ли это определено , какое значение будет выбрано, если несколько членов имеют одинаковое числовое значение, но ему нужно выбрать что-то , и оно по крайней мере представляется согласованным .
Фактически, Enum.ToString()
говорит:
Если несколько элементов перечисления имеют одно и то же базовое значение, и вы пытаетесь получить строковое представление имени члена перечисления на основе его базового значения, ваш код не должен делать никаких предположений о том, какое имя возвращает метод.