Objective C / C предоставление значений по умолчанию перечислений

Я читал где-нибудь о предоставлении значений по умолчанию перечислений как так:

typedef enum  {
MarketNavigationTypeNone = 0,
MarketNavigationTypeHeirachy = 1,
MarketNavigationTypeMarket = 2
} MarketNavigationLevelType;

.. но я не могу помнить значение выполнения этого. Если я не даю им значения по умолчанию - и затем кто-то позже переупорядочивает перечисление - каковы риски?

Если я всегда использую перечислимое имя и даже не обращаюсь к ним их целочисленным значением, есть ли какие-либо риски?

Единственная возможная проблема, о которой я могу думать, состоит в том, если я инициализирую перечисление от международного значения от DB - и перечисление переупорядочивается - затем, приложение повредилось бы.

10
задан bandejapaisa 14 May 2010 в 07:54
поделиться

2 ответа

Как правило, это имеет значение только в том случае, если перечисление доступно какому-либо внешнему API или будет использоваться для обмена данными через файлы данных или другими способами. . Если перечисление используется только в вашем приложении и нигде больше, то фактические значения не имеют значения.

2
ответ дан 4 December 2019 в 01:29
поделиться

Это не значения по умолчанию, вы даете им значения, которые они всегда будут иметь.

Если вы не инициализируете их явно, значение первого перечислителя равно нулю. Для всех остальных, если нет инициализатора, их значение равно значению предыдущего перечислителя, увеличенному на единицу.

Есть две причины для придания им явных значений:

  • вы не хотите, чтобы они имели значения, которые они имели бы в противном случае
  • вы хотите, чтобы было ясно, какое значение они имеют (для вас или других разработчиков)

Если вы всегда ссылаетесь на них по их имени и никогда явно не используете интегральное значение для сравнения или присваивания, явное придание им значения не требуется.

8
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: