Használati szabályok

A használati szabályok támogatják a .NET megfelelő használatát.

Ebben a szakaszban

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: A GC.SuppressFinalize helyes meghívása Egy olyan metódus, amely a Dispose implementációja, nem hívja meg a(z) GC.SuppressFinalize elemet; vagy egy olyan metódus, amely nem a(z) Dispose implementációja, meghívja a(z) GC.SuppressFinalize elemet; vagy egy metódus meghívja a(z) GC.SuppressFinalize elemet, és a(z) this elemtől eltérő értéket ad át (Me a Visual Basicben).
CA2200: Újrafedés a verem részleteinek megőrzése érdekében A kivételt újradobják, és a kivétel kifejezetten meg van adva a throw utasításban. 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 dobjon 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: Az argumentumkivétel helyes inicializálá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 Azok a statikus mezők, amelyek nem konstansok és nem csak olvasható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 Az a típus, amely implementálja a(z) System.IDisposable elemet, olyan mezőket deklarál, amelyek típusa szintén implementálja a(z) IDisposable elemet. 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: A Dispose metódusoknak meg kell hívniuk az alaposztály Dispose metódusát 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ívülről látható enumeráció meg van jelölve FlagsAttribute karakterrel, és egy vagy több olyan értéke van, amely nem kettő hatványa, és nem is az enumerációban definiált többi érték kombinációja.
CA2218: A GetHashCode felülírása az Equals felülbírálásakor Egy nyilvános típus felülbírálja a(z) System.Object.Equals elemet, de a(z) System.Object.GetHashCode elemet nem bírálja felül.
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őfeltételben kivétel keletkezik, a futtatókörnyezet csendben elkapja a kivételt. Ez megnehezíti az eredeti hiba észlelését és hibakeresését.
CA2224: A(z) egyenlőségoperátor túlterhelésekor bírálja felül az Equals metódust A nyilvános típus megvalósítja az egyenlőségi operátort, de nem írja felül a(z) System.Object.Equals elemet.
CA2225: Az operátorok túlterhelései alternatívokat neveztek el Operátor-túlterhelés lett észlelve, és a várt elnevezett 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. Lezárt osztály esetén a konstruktort tegye priváttá; ellenkező esetben tegye védetté.
CA2231: Az egyenlőségoperátor túlterhelése a ValueType.Equals felülírásakor Egy értéktípus felülírja a(z) Object.Equals elemet, de nem valósítja meg az egyenlőségi operátort.
CA2234: System.Uri-objektumok átadása sztringek helyett Egy olyan metódus kerül meghívásra, amelynek van egy sztringparamétere, és a paraméter neve tartalmazza az „uri”, „URI”, „urn”, „URN”, „url” vagy „URL” elemek valamelyikét. A metódust deklaráló típus tartalmaz egy megfelelő metódustúlterhelést, amely System.Uri paraméterrel rendelkezik.
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 a Single.Nan vagy a Double.Nan értékhez viszonyít. Használja a(z) Single.IsNan(Single) vagy Double.IsNan(Double) elemet az érték teszteléséhez.
CA2243: Az attribútum-karakterláncliteráloknak helyesen elemezhetőnek kell lenniük 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ó kivételével mindegyik 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 ebben az utasításban a taghozzáférés a szimbólum hozzárendelés előtti régi értékének, vagy a hozzárendelésből származó új értékének a használatára szolgált-e.
CA2247: A TaskCompletionSource konstruktornak átadott argumentumnak TaskCreationOptions enumnak kell lennie a TaskContinuationOptions enum helyett A TaskCompletionSource rendelkezik olyan konstruktorokkal, amelyek a mögöttes Taskot vezérlő TaskCreationOptions értéket vesznek át, valamint olyan konstruktorokkal is, amelyek a Taskban tárolt objektumállapotot vesznek á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 Azok a string.IndexOf hívások, amelyek eredményét egy részkarakterlánc jelenlétének vagy hiányának ellenőrzésére használják, lecserélhetők erre: string.Contains.
CA2250: Használja a(z) ThrowIfCancellationRequested ThrowIfCancellationRequested automatikusan ellenőrzi, hogy a token megszakításra került-e, és ha igen, OperationCanceledException kivételt dob.
CA2251: A String.Equals használata a String.Compare helyett A String.Equals eredményének nullához hasonlítása helyett a String.Compare használata egyértelműbb, és valószínűleg gyorsabb 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 az elnevezett helyőrzők nem állhatnak kizárólag számjegyekbő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(z) DynamicInterfaceCastableImplementationAttribute attribútummal ellátott típusok interfészmegvalósításként szolgálnak egy olyan típus számára, amely megvalósítja a(z) IDynamicInterfaceCastable típust. 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 IDynamicInterfaceCastable típust implementáló entitás nem implementálhat dinamikus interfészt a metaadatokban, az olyan példányinterfész tagokra történő hívások, amelyek nincsenek explicit módon ezen a típuson implementálva, valószínűleg sikertelenek lesznek futásidőben. Új felülettagok static megjelölése a futtatókörnyezeti 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 ThreadStaticAttribute csak a static mezőket érinti (a Visual Basicben: Shared). 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 együtt a(z) ConfigureAwaitOptions.SuppressThrowing és a(z) Task<TResult> elemet. 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.
CA2263: Részesítse előnyben a generikus túlterhelést, ha a típus ismert A generikus túlterhelés használata előnyösebb, mint egy System.Type argumentum átadása, ha a típus ismert, mert tisztább és típusbiztosabb kódot eredményez, valamint jobb fordítási idejű ellenőrzéseket tesz lehetővé.
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 konstrukciók, például a nem nullázható struktúrák, valamint a „nameof()” és a „new” kifejezések köztudottan soha nem lehetnek null értékűek, ezért az „ArgumentNullException.ThrowIfNull” soha nem dob kivételt.
CA2265: Ne hasonlítsa össze Span<T> a nulldefault Egy span összehasonlítása a null vagy a default elemmel lehet, hogy nem azt eredményezi, amit szándékozott. default és a null literál implicit módon Span<T>.Empty-ra konvertálódnak.
CA2266: A fájlalapú program belépési pontnak a következővel kell kezdődnie: #! Ha egy fájlalapú program több fájlból áll, a belépési pont fájljának egy shebang (#!) vonallal kell kezdődnie, hogy egyértelműen megkülönböztetje a többi fájltól.