Objective-C/C提供枚举默认值
我在某个地方读到过关于给定枚举默认值的内容,如下所示:Objective-C/C提供枚举默认值,c,objective-c,enums,enumeration,C,Objective C,Enums,Enumeration,我在某个地方读到过关于给定枚举默认值的内容,如下所示: typedef enum { MarketNavigationTypeNone = 0, MarketNavigationTypeHeirachy = 1, MarketNavigationTypeMarket = 2 } MarketNavigationLevelType; 。。但我不记得这样做的价值。如果我不给他们默认值——然后有人在稍后对枚举重新排序——风险是什么 如果我总是使用枚举名,甚至不使用它们的整数值来引用它们,是否存在任
typedef enum {
MarketNavigationTypeNone = 0,
MarketNavigationTypeHeirachy = 1,
MarketNavigationTypeMarket = 2
} MarketNavigationLevelType;
。。但我不记得这样做的价值。如果我不给他们默认值——然后有人在稍后对枚举重新排序——风险是什么
如果我总是使用枚举名,甚至不使用它们的整数值来引用它们,是否存在任何风险
我能想到的唯一可能的问题是,如果我从DB的int值初始化枚举-并且枚举被重新排序-那么应用程序将中断。通常,只有当枚举暴露于某种外部API,或者它将被用于通过数据文件或其他方式交换数据时,这才重要。如果枚举仅在应用程序中使用,而不在其他地方使用,则实际值无关紧要。如果不是默认值,则您将为它们提供始终具有的值 如果不显式初始化它们,则第一个枚举数的值为零。对于所有其他枚举数,如果没有初始值设定项,则它们的值是前一个枚举数的值增加1 为其指定明确的值有两个原因:
- 你不想让他们拥有其他情况下的价值观
- 你想清楚他们有什么价值(对你或其他开发者)
如果您总是以它们的名称引用它们,并且从不显式地使用整数值进行比较或赋值,则不需要显式地给它们赋值。“默认值”-是的,我知道它们是常量-我只是使用了错误的术语。您没有提到将枚举存储在应用程序之外,然后重新初始化它们的事实?@ban:如果外部接口没有使用具有等效定义的枚举,那么这将显式地为它们分配一些整数值。