通过


CA1069:枚举不得具有重复值

属性
规则 ID CA1069
标题 枚举不得具有重复值
类别 设计
修复会引起中断还是不会引起中断 突发
在 .NET 10 中默认启用 作为一种建议
适用的语言 C# 和 Visual Basic

原因

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

规则说明

每个枚举成员应具有唯一的常量值,或者应显式地与枚举中的先前成员共享值,以明确表示共享的意图。 例如:

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 = 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
}

何时禁止显示警告

请勿压制此规则的违规行为。

另请参阅