前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CA1069:枚举不得具有重复值

CA1069:枚举不得具有重复值

作者头像
用户4268038
发布2022-01-11 10:47:32
6090
发布2022-01-11 10:47:32
举报
文章被收录于专栏:stcnb

规则 ID

CA1069

类别

设计

修复是中断修复还是非中断修复

重大

原因

枚举具有多个成员,这些成员显式分配有相同常数值。

规则说明

每个枚举成员都应具有唯一的常数值,或者为其显式分配枚举中的前一个成员以指示共享值的明确意图。 例如:

enum E

{

Field1 = 1,

AnotherNameForField1 = Field1, // This is fine

Field2 = 2,

Field3 = 2, // CA1069: This is not fine. Either assign a different constant value or 'Field2' to indicate explicit intent of sharing value.

}

此规则有助于捕获在以下场景中引入的功能性 bug:

意外键入错误:用户意外地为多个成员键入了相同的常数值。

复制粘贴错误:用户复制了一个现有成员定义,然后重命名了该成员,但忘记更改值。

合并多个分支中的解决方案:在不同分支中添加了具有不同名称但有相同值的新成员。

如何解决冲突

若要解决冲突,请分配新的唯一常数值,或分配枚举中的前一个成员以指示共享同一值的明确意图。 例如,以下代码片段显示了与此规则的冲突,以及解决冲突的几种方法:

enum E

{

Field1 = 1,

AnotherNameForField1 = Field1, // This is fine

Field2 = 2,

Field3 = 2, // CA1069: This is not fine. Either assign a different constant value or 'Field2' to indicate explicit intent of sharing value.

}

enum E

{

Field1 = 1,

AnotherNameForField1 = Field1, // This is fine

Field2 = 2,

Field3 = 3, // This is now fine

}

enum E

{

Field1 = 1,

AnotherNameForField1 = Field1, // This is fine

Field2 = 2,

Field3 = Field2, // This is also fine

}

何时禁止显示警告

请勿禁止显示此规则的冲突。

另请参阅

设计规则

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档