5 ответов:
использовать перечисления, когда вы хотите определить диапазон значений, что что-то может быть. Цвет является очевидным примером, как:
public enum Colour { White, Red, Blue }или, может быть, набор возможных вещей, таких как: (Пример я украл у здесь как я ленивый)
[FlagsAttribute] enum DistributedChannel { None = 0, Transacted = 1, Queued = 2, Encrypted = 4, Persisted = 16, FaultTolerant = Transacted | Queued | Persisted }константы должны быть для одного значения, например PI. Нет диапазон значений Pi, там просто пи.
что отсутствует в других ответах, так это то, что перечисления имеют целочисленный базовый тип. Вы можете изменить значение по умолчанию с int на любой другой интегральный тип, кроме char, например:
enum LongEnum : long { foo, bar, }вы можете явно и неявно приводить к базовому типу, Что полезно в операторах switch. Помните, что можно привести любое значение базового типа к перечислению, даже если перечисление не имеет члена с соответствующим значением. Поэтому использование всегда раздела по умолчанию в коммутаторе-хорошая идея. КСТАТИ, .NET сам позволяет даже перечисления с плавающей запятой, но вы не можете определить их в C#, хотя я думаю, что вы все еще можете использовать их (кроме switch).
кроме того, использование перечислений дает вам больше безопасности типа. Если вы собираетесь использовать, например, константы int в качестве параметров метода, то я мог бы вызвать метод с любым значением int. Конечно, через кастинг это может произойти и с перечислениями, но это не произойдет случайно. Хуже всего возможность перепутать порядок параметров.
void method(int a, int b) {...}Если константа A только может перейти в a, а константа B только может перейти в b, тогда использование двух разных типов перечислений обнаружит любое неправильное использование во время компиляции.
константа-это языковая функция, которая говорит, что переменная не изменит значение (поэтому компилятор может выполнять оптимизацию вокруг этого знания), где перечисление является определенным типом.
константы могут быть любого типа данных, но перечисление перечисление.
Я использую перечисление в любом месте, где у вас может быть несколько вариантов и вы хотите улучшить читаемость кода. т. е. вы можете иметь уровни трассировки как int со значениями 0, 1, 2 или как перечисление как ошибка, предупреждение и информация.
перечисления также имеют возможность использоваться в качестве побитовых операторов, т. е. FontStyle.Смелый | Свойство Fontstyle.Курсив даст вам жирные и курсивные шрифты.
В дополнение к ответу Роберта:
использовать enum для конечного набора именованных значений. Вы действительно не заботитесь о числовом значении каждого символа (но у вас все еще есть возможность наложить их, например, для совместимости с устаревшей системой).
Роберт: да, перечисления могут быть использованы в качестве битовых полей. Используйте флаги атрибут (и убедитесь, что члены перечисления имеют подходящие числовые значения).
константа C# похожа на переменную в том, что она дает определенное имя значению. Однако, константа отличается от стандартной переменной, поскольку после определения значения константы не может быть изменено. Главным преимуществом констант является их помощь в создании самодокументированного кода, а также возможность объявления ключевых значений в одном месте, что позволяет легко обслуживать, если значение необходимо обновить и программное обеспечение перекомпилированный.
в то время как перечислимые списки полезны для определения последовательностей и состояний, особенно когда существует естественная прогрессия через эти состояния. Это связано с тем, что каждая константа в списке может быть отформатирована и сравнена с использованием ее имени или значения. Перечисление также может использоваться для определения ограниченного набора допустимых значений.
Comments