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
}
隱藏警告的時機
請勿隱藏此規則的違規。