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.SuppressFinalizeimplementációjaDispose; vagy metódushívásokat végezGC.SuppressFinalize, és a (Visual Basicben) kívüli thisMe 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 IDisposabletí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.Nana . 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.EqualsString.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 (SharedVisual 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 TResulteredmé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.