Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA1069 |
| Cím | Az enumerálásoknak nem szabad ismétlődő értékekkel rendelkezniük |
| Kategória | Tervezés |
| A javítás romboló vagy nem romboló | Szünetelés |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Javaslatként |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
Az enumerálásnak több tagja van, amelyek explicit módon ugyanazt az állandó értéket kapják.
Szabály leírása
Minden enumerálási tagnak egyedi állandó értékkel kell rendelkeznie, vagy explicit módon hozzá kell rendelnie egy korábbi taghoz az enumerálásban, hogy jelezze a megosztási érték kifejezett szándékát. Példa:
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.
}
Ez a szabály segít a következő forgatókönyvekből bevezetett funkcionális hibák kiszűrésében:
- Véletlen gépelési hibák, amikor a felhasználó véletlenül ugyanazt az állandó értéket gépelte be több tag esetében.
- Másolási és beillesztési hibák, ahol a felhasználó lemásolt egy meglévő tagmeghatározást, majd átnevezte a tagot, de elfelejtette módosítani az értéket.
- Több ág feloldásának egyesítése, ahol egy új tag más néven lett hozzáadva, de ugyanazzal az értékkel a különböző ágakban.
Szabálysértések kijavítása
A szabálysértés kijavításához rendeljen hozzá egy új egyedi állandó értéket, vagy rendeljen hozzá egy korábbi tagot a számban, hogy jelezze az azonos érték megosztásának explicit szándékát. A következő kódrészlet például a szabály megsértését és a szabály kijavításának néhány módját mutatja be:
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
}
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa le a szabály megsértését.