CA1069: A számokat nem szabad duplikálni
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 | Design |
A javítás kompatibilitástörő vagy nem törik | Törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
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éldául:
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.
- Beillesztési hibák másolása, ahol a felhasználó átmásolt egy meglévő tagdefiníciót, majd átnevezte a tagot, de elfelejtette módosítani az értéket.
- Több ág felbontásának egyesítése, ahol egy új tag más néven lett hozzáadva, de ugyanaz az érték 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.
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: