Használati szabályok
A használati szabályok támogatják a .NET megfelelő használatát.
A szakasz tartalma
Szabály | Leírás |
---|---|
CA1801: A nem használt paraméterek áttekintése | A metódus-aláírás olyan paramétert tartalmaz, amely nem szerepel a metódus törzsében. |
CA1816: GC hívása. A megfelelő elnyomásifinalizálás | Az Elidegenítés implementációja nem hív meg GC.SuppressFinalize ; vagy olyan metódust, amely nem a hívások GC.SuppressFinalize implementációjaDispose ; vagy metódushívásokat végezGC.SuppressFinalize , és a (Visual Basicben) kívüli this Me műveletet ad át. |
CA2200: Újrafedés a verem részleteinek megőrzése érdekében | A kivétel újra létre lesz adva, és a kivétel explicit módon meg van adva a dobás utasításában. Ha a kivételt a dobási utasításban megadott kivétel megadásával ismét meg kell ismételni, a metódushívások listája elveszik a kivételt eldobó eredeti metódus és az aktuális metódus között. |
CA2201: Ne emeljen fenntartott kivételtípusokat | Ez megnehezíti az eredeti hiba észlelését és hibakeresését. |
CA2207: Értéktípus statikus mezőinek inicializálása beágyazottan | Egy értéktípus explicit statikus konstruktort deklarál. A szabály megsértésének kijavításához inicializálja az összes statikus adatot a deklaráláskor, és távolítsa el a statikus konstruktort. |
CA2208: Argumentum-kivételek helyes példányosítása | A rendszer meghívja az ArgumentumExceptionből származó vagy abból származtatott kivételtípus alapértelmezett (paraméter nélküli) konstruktorát, vagy helytelen sztringargumentumot ad át az ArgumentumExceptionből származó vagy abból származtatott kivételtípus paraméteres konstruktorának. |
CA2211: A nem állandó mezők nem lehetnek láthatók | A nem állandó vagy írásvédett statikus mezők nem szálbiztosak. Az ilyen mezőkhöz való hozzáférést gondosan szabályozni kell, és fejlett programozási technikákat igényel az osztályobjektumhoz való hozzáférés szinkronizálásához. |
CA2213: Eldobható mezőket kell megsemmisíteni | Egy olyan típus, amely implementálja System.IDisposable a szintén implementált IDisposable típusú mezők deklarálását. A Dispose mező metódusát nem a Dispose deklarálási típus metódusa hívja meg. |
CA2214: A konstruktorokban ne hívja meg a felülírható metódusokat | Amikor egy konstruktor virtuális metódust hív meg, lehetséges, hogy a metódust meghívó példány konstruktora nem lett végrehajtva. |
CA2215: Az elidegenítési módszereknek alaposztály-elidegenítést kell hívniuk | Ha egy típus egy eldobható típustól öröklődik, az Dispose alaptípus metódusát a saját Dispose metódusától kell meghívnia. |
CA2216: Az eldobható típusoknak véglegesítőt kell deklarálniuk | A nem felügyelt erőforrások használatára javaslatot tevő mezőket implementáló System.IDisposabletípus nem implementál véglegesítőt a leírtak szerint Object.Finalize . |
CA2217: Ne jelölje meg a számokat a FlagsAttribute használatával | A külsőleg látható enumerálást a rendszer megjelöli FlagsAttribute , és egy vagy több olyan értékkel rendelkezik, amely nem két vagy a többi definiált érték kombinációja az enumerálásban. |
CA2218: A GetHashCode felülbírálása egyenlők felülbírálásakor | Nyilvános típusú felülbírálások System.Object.Equals , de nem felülbírálják System.Object.GetHashCode. |
CA2219: Ne emelj kivételeket a kivételkikötésekben | Ha a rendszer kivételt hoz létre egy végső vagy tartalék záradékban, az új kivétel elrejti az aktív kivételt. Ha egy szűrőzáradék kivételt hoz létre, a futtatókörnyezet csendesen elkapja a kivételt. Ez megnehezíti az eredeti hiba észlelését és hibakeresését. |
CA2224: A felülbírálás egyenlő a túlterhelési operátor egyenlő | A nyilvános típus implementálja az egyenlőségi operátort, de nem bírálja felül System.Object.Equals. |
CA2225: Az operátorok túlterhelései alternatívokat neveztek el | A rendszer túlterhelést észlelt, és a várt alternatív metódus nem található. A nevesített alternatív tag ugyanazokat a funkciókat biztosítja, mint az operátor, és olyan fejlesztők számára érhető el, akik olyan nyelveken programozzanak, amelyek nem támogatják a túlterhelt operátorokat. |
CA2226: Az operátoroknak szimmetrikus túlterhelésekkel kell rendelkezniük | Egy típus megvalósítja az egyenlőségi vagy egyenlőtlenségi operátort, és nem valósítja meg az ellenkező operátort. |
CA2227: A gyűjtemény tulajdonságainak csak olvashatónak kell lenniük | A írható gyűjteménytulajdonságokkal a felhasználó lecserélheti a gyűjteményt egy másik gyűjteményre. Egy írásvédett tulajdonság megakadályozza a gyűjtemény cseréjét, de továbbra is lehetővé teszi az egyes tagok beállítását. |
CA2229: Szerializálási konstruktorok implementálása | A szabály megsértésének kijavításához implementálja a szerializálási konstruktort. Zárt osztály esetén tegye magánjellegűvé a konstruktort; ellenkező esetben tegye védetté. |
CA2231: A túlterhelési operátor egyenlő a ValueType.Equals felülbírálásával | Az értéktípus felülbírál, Object.Equals de nem valósítja meg az egyenlőségi operátort. |
CA2234: System.Uri-objektumok átadása sztringek helyett | A metódus olyan metódust hív meg, amelynek sztringparamétere "uri", "URI", "urn", "URN", "url" vagy "URL" értéket tartalmaz. A metódus deklarálási típusa egy paraméterrel rendelkező System.Uri metódust tartalmaz. |
CA2235: Az összes nem szerializálható mező megjelölése | A nem szerializálható típusú példánymezők szerializálható típusban deklarálhatók. |
CA2237: ISerializable-típusok megjelölése a SerializableAttribute használatával | Ahhoz, hogy a közös nyelvi futtatókörnyezet szerializálhatóként felismerje, a típusokat akkor is meg kell jelölni a SerializableAttribute attribútummal, ha a típus egyéni szerializálási rutint használ a ISerializable felület implementálásán keresztül. |
CA2241: Helyes argumentumok megadása a formázási módszerekhez | Az átadott String.Format formátumargumentum nem tartalmaz olyan formázási elemet, amely megfelel az egyes objektumargumentumoknak, vagy fordítva. |
CA2242: A NaN helyes tesztelése | Ez a kifejezés egy értéket Single.Nan tesztel a vagy Double.Nan a . Használja Single.IsNan(Single) vagy Double.IsNan(Double) tesztelje az értéket. |
CA2243: Az attribútumsztring-literáloknak megfelelően kell elemezni | Az attribútum sztringkonstans paramétere nem elemzi megfelelően az URL-címet, a GUID-t vagy a verziót. |
CA2244: Ne duplikálja az indexelt elemek inicializálását | Az objektuminicializáló több indexelt eleminicializálóval rendelkezik, ugyanazzal az állandó indexel. Az utolsó inicializáló ki nem redundáns. |
CA2245: Ne rendeljen hozzá tulajdonságot önmagához | Egy tulajdonság véletlenül hozzá lett rendelve önmagához. |
CA2246: Ne rendeljen hozzá szimbólumot és tagját ugyanabban az utasításban | Nem ajánlott egy szimbólumot és annak tagját, azaz egy mezőt vagy tulajdonságot hozzárendelni ugyanabban az utasításban. Nem egyértelmű, hogy a taghozzáférés a szimbólum régi értékét akarta-e használni a hozzárendelés előtt, vagy a hozzárendelés új értékét ebben az utasításban. |
CA2247: A TaskCompletionSource konstruktornak átadott argumentumnak TaskCreationOptions enumnak kell lennie a TaskContinuationOptions enum helyett | A TaskCompletionSource olyan konstruktorokkal rendelkezik, amelyek az alapul szolgáló feladatot vezérlő TaskCreationOptions-t, valamint a tevékenységben tárolt objektumállapotú konstruktorokat veszik át. Ha a TaskCreationOptions helyett véletlenül egy TaskContinuationOptions parancsot ad át, a hívás állapotként kezeli a beállításokat. |
CA2248: Adja meg a helyes "enum" argumentumot az "Enum.HasFlag" értékhez | A metódushívás argumentumaként HasFlag átadott számtípus eltér a hívó szám típusától. |
CA2249: Fontolja meg a String.Contains használatát a String.IndexOf helyett | Azokat a hívásokat, string.IndexOf ahol az eredmény alapján ellenőrzik, hogy van-e részszűrés, vagy hogy nincs-e részszűrés, helyettesítheti a következővel string.Contains : . |
CA2250: Használat ThrowIfCancellationRequested |
ThrowIfCancellationRequested automatikusan ellenőrzi, hogy a jogkivonat törölve lett-e, és ha van, akkor a rendszer egy adott jogkivonatot OperationCanceledException ad vissza. |
CA2251: Használat String.Equals String.Compare |
Az eredmény String.Compare nullához való összehasonlítása helyett egyértelműbb és valószínűleg gyorsabb String.Equals is. |
CA2252: Az előzetes verziójú funkciók használata | Az előzetes verziójú API-k használata előtt jelentkezzen be a funkciók előzetes verziójára. |
CA2253: A névvel ellátott helyőrzők nem lehetnek numerikus értékek | A naplózási üzenetsablonban szereplő elnevezett helyőrzők nem állhatnak csak numerikus karakterekből. |
CA2254: A sablonnak statikus kifejezésnek kell lennie | A naplózási üzenet sablonja nem változhat a hívások között. |
CA2255: Az ModuleInitializer attribútum nem használható kódtárakban |
A modulinicializálókat az alkalmazáskód arra használja, hogy az alkalmazás összetevői inicializálva legyenek az alkalmazáskód végrehajtása előtt. |
CA2256: A szülőfelületeken deklarált összes tagnak implementációval kell rendelkeznie egy DynamicInterfaceCastableImplementation attribútumú felületen | A típust DynamicInterfaceCastableImplementationAttribute megvalósító IDynamicInterfaceCastable típushoz illesztő implementációként hozzárendelt típusok. Ennek eredményeképpen biztosítania kell az örökölt felületeken meghatározott összes tag implementálását, mivel a megvalósító IDynamicInterfaceCastable típus másként nem biztosítja őket. |
CA2257: A DynamicInterfaceCastableImplementationAttribute felületen definiált tagoknak "statikusnak" kell lenniük | Mivel egy implementálható IDynamicInterfaceCastable típus nem implementál dinamikus felületet a metaadatokban, az ilyen típushoz nem definiált példányfelület-tag hívásai futásidőben valószínűleg sikertelenek lesznek. Jelöljön meg új felülettagokat static a futásidejű hibák elkerülése érdekében. |
CA2258: A Visual Basic "DynamicInterfaceCastableImplementation" felületének biztosítása nem támogatott | Funkcionális DynamicInterfaceCastableImplementationAttribute -attribútumú felület biztosításához az Alapértelmezett felülettagok funkció szükséges, amely a Visual Basicben nem támogatott. |
CA2259: Győződjön meg arról, hogy ThreadStatic csak statikus mezőkkel van használatban |
ThreadStaticAttributecsak a (Shared Visual Basic) mezőket érinti static . A példánymezőkre alkalmazva az attribútum nem befolyásolja a viselkedést. |
CA2260: Általános matematikai felületek helyes implementálása | Az általános matematikai interfészek megkövetelik, hogy maga a származtatott típus legyen használva az ön-ismétlődő típusparaméterhez. |
CA2261: Ne használja ConfigureAwaitOptions.SuppressThrowing a következővel: Task<TResult> |
A ConfigureAwaitOptions.SuppressThrowing beállítást az általános Task<TResult> nem támogatja, mivel ez érvénytelen TResult eredményhez vezethet. |
CA2262: Megfelelő beállítás MaxResponseHeadersLength |
Győződjön meg arról, hogy az MaxResponseHeadersLength érték helyesen van megadva. Ez az érték kilobájtban van megadva. |
CA2264: Ne adjon át nem null értékű értéket az "ArgumentNullException.ThrowIfNull" értéknek | Az 'ArgumentNullException.ThrowIfNull' akkor dob, ha az átadott argumentum értéke "null". Bizonyos szerkezetek, például a nem null értékű szerkezetek, valamint a "nameof()" és az "új" kifejezések soha nem null értékűek, ezért az "ArgumentNullException.ThrowIfNull" soha nem dob. |
CA2263: Az általános túlterhelés előnyben részesítve, ha ismert a típus | Az általános túlterhelés használata előnyösebb, ha argumentumot System.Type ad át, ha a típus ismert, mivel a hatékonyabb fordítási idő ellenőrzésével elősegítik a tisztább és a típusbiztosabb kódot. |
Dolgozzon együtt velünk a GitHubon
A tartalom forrása a GitHubon található, ahol létrehozhat és áttekinthet problémákat és lekéréses kérelmeket is. További információért tekintse meg a közreműködői útmutatónkat.
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: