Objective-C / C给出枚举默认值

我在某处读到了枚举默认值,如下所示:

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

..但我不记得这样做的价值。 如果我不给他们默认值 – 然后有人后来重新订阅枚举 – 有什么风险?

如果我总是使用枚举名称,甚至不用它们的整数值来引用它们,那么有任何风险吗?

我能想到的唯一可能的问题是,如果我从数据库中的int值初始化枚举 – 并且重新排序枚举 – 那么应用程序将会中断。

一般来说,这只有在枚举暴露于某种外部API或者它将用于通过数据文件或其他方式交换数据时才有意义。 如果枚举仅在您的应用程序中使用,而在其他任何地方都没有,则实际值无关紧要。

这不是默认值,您可以为它们提供始终具有的值。

如果不显式初始化它们,则第一个枚举器值为零。 对于所有其他人,如果没有初始化器,则它们的值是前一个枚举器的值增加1。

给出明确值的原因有两个:

  • 你不希望他们拥有他们所拥有的价值
  • 你想清楚它们有什么价值(为你或其他开发者)

如果您始终按名称引用它们并且从不明确使用整数值进行比较或赋值,则不需要明确地给它们赋值。