Вот интересный поворот вашей проблемы, попробуйте следующий Enum ...
public enum Numbers : int
{
One,
Two,
Four,
FirstValue = 1
}
Консоль .WriteLine (...) теперь будет печатать «Два»!
И Two
, и FirstValue
представляют одно и то же число 1
, но фактическое значение зависит от того, как число было преобразовано в его строковое представление, и наоборот.
Класс Enum использует отражение, чтобы получить имена чисел, а затем сохраняет их в массивах, но сортирует все это до того, как это делает. Затем Enum.ToString () выполняет двоичный поиск по отсортированным значениям, чтобы получить строковое представление. Благодаря тому, как это сделано, вы можете получить другой результат в зависимости от количества элементов, перечисленных в перечислении!
Теперь, что касается значения, "видимого" в VS, я подозреваю, что визуализатор отладчика для перечислений использует собственный алгоритм, который исправляет (?) Эту ошибку.