Элементы перечисления имеют имена и значения. Это почти все о контрольных значениях. Существует много перечислений, и в некоторых из них вы найдете уход о значениях.
Вот некоторые примеры:
- Если вы используете
XmlSerializer
, то имя элемента (текст) используется для хранения значения свойства. Здесь вам не нужны значения.
- Если вы сохраняете результат в базе данных, то, скорее всего, вы будете использовать текстовое поле и синтаксический анализ, но скорее числовое поле. Таким образом, перечисление сохраняется как значение элемента. Здесь вы заботитесь о них, потому что обновление перечисления (добавление новых элементов к нему) может сделать уже сохраненные в значениях базы данных недопустимыми.
- Если вы используете битовые поля, или если значение перечислений фактически группируется константы (перечисление может быть использовано как объединение констант в группу их, к примеру, в
iTextSharp
есть hundereds из несгруппированных констант, что делает сложно найти нужный, если бы у них были категории, или перечисления, чтобы их удержать - было бы намного проще), тогда вы заботитесь о значениях.
На самом деле существуют известные правила того, как компилятор присваивает значения элементам перечисления.Так что если, к примеру, у вас это перечисление
public enum test
{
one,
two,
three
}
тогда, когда вам нужно добавить four
и oneandhalf
к нему вы можете сделать добавить его как этот
public enum test
{
one,
two,
three,
four,
oneandhalf
}
или как это
public enum test
{
one = 0,
oneandhalf = 4,
two = 1,
three = 2,
four = 3,
}
, и вы по-прежнему сохраняете обратную совместимость (ранее сохраненные в значениях базы данных после обновления). Обратите внимание, что вам нужно явно указывать значения, когда вставляет элементы между существующими или что-то bad может случиться.
В первом случае, если кто-то добавил значение 'foo' между' one' и 'two', тогда все следующие значения вашего перечисления изменились. Во втором примере этого не произойдет. Тем не менее, это, вероятно, скорее вопрос мнения и не подходит для Stack Overflow. –