分享方式:


CA1069:列舉不能有重複的值

屬性
規則識別碼 CA1069
標題 列舉不能有重複的值
類別 設計
修正程式是中斷或非中斷 中斷
預設在 .NET 8 中啟用 建議

原因

列舉 具有多個明確指派相同常數值的成員。

檔案描述

每個列舉成員都應該有唯一的常數值,或明確指派給列舉中的先前成員,以表示共用值的明確意圖。 例如:

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
}

隱藏警告的時機

請勿隱藏此規則的違規。

另請參閱