Должен ли Enum начинаться с 0 или 1? - PullRequest
128 голосов
/ 31 августа 2011

Представьте, что я определил следующее Enum:

public enum Status : byte
{
    Inactive = 1,
    Active = 2,
}

Как лучше всего использовать enum?Должно ли оно начинаться с 1, как в примере выше, или с 0 (без явных значений), например:

public enum Status : byte
{
    Inactive,
    Active
}

Ответы [ 14 ]

2 голосов
/ 31 августа 2011

Не назначайте никаких номеров. Просто используйте его так, как предполагалось.

0 голосов
/ 07 сентября 2011

Не начинайте их с 0, если для этого нет причин, таких как использование их в качестве индексов для массива или списка, или если есть какая-то другая практическая причина (например, их использование в побитовых операциях).

Ваш enum должен начинаться именно там, где это необходимо. Это также не должно быть последовательным. Значения, если они установлены явно, должны отражать некоторое семантическое значение или практическое рассмотрение. Например, enum «бутылок на стене» должно быть пронумеровано от 1 до 99, тогда как enum для степеней 4, вероятно, должно начинаться с 4 и продолжаться с 16, 64, 256 и т. Д.

Кроме того, добавление элемента с нулевым значением в enum следует выполнять только в том случае, если он представляет допустимое состояние. Иногда «нет», «неизвестно», «отсутствует» и т. Д. Являются допустимыми значениями, но часто это не так.

0 голосов
/ 31 августа 2011

Прежде всего, если вы не указываете конкретные значения по причине (числовое значение имеет значение где-то еще, например, в Базе данных или внешней службе), тогда вообще не указывайте числовые значения и не допускайте их явного указания.*

Во-вторых, у вас всегда должен быть элемент с нулевым значением (в перечислении без флагов).Этот элемент будет использоваться в качестве значения по умолчанию.

0 голосов
/ 31 августа 2011

Мне нравится начинать мои перечисления с 0, поскольку это значение по умолчанию, но я также хотел бы включить неизвестное значение со значением -1.Затем он становится значением по умолчанию и иногда может помочь с отладкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...