Share via


Användningsregler

Användningsregler stöder korrekt användning av .NET.

I detta avsnitt

Regel beskrivning
CA1801: Granska oanvända parametrar En metodsignatur innehåller en parameter som inte används i metodtexten.
CA1816: Ring GC. SuppressFinalize korrekt En metod som är en implementering av Dispose anropar GC.SuppressFinalizeinte ; eller en metod som inte är en implementering av Dispose anrop GC.SuppressFinalizeeller en metod anropar GC.SuppressFinalize och skickar något annat än this (Me i Visual Basic).
CA2200: Återväxt för att bevara stackinformation Ett undantag ändras och undantaget anges uttryckligen i instruktionen throw. Om ett undantag ändras genom att ett undantag anges i utkast-instruktionen går listan över metodanrop mellan den ursprungliga metoden som utlöste undantaget och den aktuella metoden förlorad.
CA2201: Skapa inte reserverade undantagstyper Detta gör det ursprungliga felet svårt att identifiera och felsöka.
CA2207: Initiera statiska fält av värdetyp infogade En värdetyp deklarerar en explicit statisk konstruktor. Åtgärda ett brott mot den här regeln genom att initiera alla statiska data när de deklareras och ta bort den statiska konstruktorn.
CA2208: Instansiera argumentfel korrekt Ett anrop görs till standardkonstruktorn (parameterlös) av en undantagstyp som är eller härleds från ArgumentException, eller så skickas ett felaktigt strängargument till en parameteriserad konstruktor av en undantagstyp som är eller härleds från ArgumentException.
CA2211: Icke-konstanta fält ska inte vara synliga Statiska fält som inte är konstanter eller skrivskyddade är inte trådsäkra. Åtkomst till ett sådant fält måste kontrolleras noggrant och kräver avancerade programmeringstekniker för att synkronisera åtkomsten till klassobjektet.
CA2213: Disponibla fält ska kasseras En typ som implementerar System.IDisposable deklarerar fält som är av typer som även implementerar IDisposable. Metoden Dispose för fältet anropas inte av Dispose metoden för deklareringstypen.
CA2214: Anropa inte tvingande metoder i konstruktorer När en konstruktor anropar en virtuell metod är det möjligt att konstruktorn för den instans som anropar metoden inte har körts.
CA2215: Kassera metoder ska anropa basklassens bortskaffning Om en typ ärver från en engångstyp måste den Dispose anropa metoden för bastypen från sin egen Dispose metod.
CA2216: Engångstyper bör deklarera finalator En typ som implementerar System.IDisposable, och har fält som tyder på användning av ohanterade resurser, implementerar inte en finalizer enligt beskrivningen i Object.Finalize.
CA2217: Markera inte uppräkningar med FlagsAttribute En externt synlig uppräkning markeras med FlagsAttribute, och den har ett eller flera värden som inte har två eller en kombination av de andra definierade värdena i uppräkningen.
CA2218: Åsidosätt GetHashCode vid åsidosättande av lika med En offentlig typ åsidosätter men åsidosätter System.Object.EqualsSystem.Object.GetHashCodeinte .
CA2219: Skapa inte undantag i undantagssatser När ett undantag utlöses i en slutgiltigt- eller fel-sats döljer det nya undantaget det aktiva undantaget. När ett undantag utlöses i en filtersats fångar körningen tyst undantaget. Detta gör det ursprungliga felet svårt att identifiera och felsöka.
CA2224: Åsidosättning är lika med överlagringsoperatorn lika med En offentlig typ implementerar likhetsoperatorn men åsidosätter System.Object.Equalsinte .
CA2225: Operatoröverlagringar har namngett alternativ En överlagring av operatorn upptäcktes och den förväntade namngivna alternativa metoden hittades inte. Den namngivna alternativa medlemmen ger åtkomst till samma funktioner som operatorn och tillhandahålls för utvecklare som programmerar på språk som inte stöder överbelastade operatorer.
CA2226: Operatorer bör ha symmetriska överlagringar En typ implementerar likhets- eller ojämlikhetsoperatorn och implementerar inte den motsatta operatorn.
CA2227: Samlingsegenskaper ska vara skrivskyddade Med en skrivbar samlingsegenskap kan en användare ersätta samlingen med en annan samling. En skrivskyddad egenskap hindrar samlingen från att ersättas, men tillåter fortfarande att enskilda medlemmar anges.
CA2229: Implementera serialiseringskonstruktorer Om du vill åtgärda ett brott mot den här regeln implementerar du serialiseringskonstruktorn. För en förseglad klass gör du konstruktorn privat; annars gör du det skyddat.
CA2231: Överlagringsoperatorn är lika med vid åsidosättande av ValueType.Equals En värdetyp åsidosätter Object.Equals men implementerar inte likhetsoperatorn.
CA2234: Skicka System.Uri-objekt i stället för strängar Ett anrop görs till en metod som har en strängparameter vars namn innehåller "uri", "URI", "urn", "URN", "url" eller "URL". Metodens deklarerande typ innehåller en motsvarande metodöverlagring som har en System.Uri parameter.
CA2235: Markera alla fält som inte kan serialiseras Ett instansfält av en typ som inte är serialiserbar deklareras i en typ som är serialiserbar.
CA2237: Markera ISerializable-typer med SerializableAttribute För att kunna identifieras av den vanliga språkkörningen som serialiserbar måste typer markeras med attributet SerializableAttribute även om typen använder en anpassad serialiseringsrutin genom implementeringen av ISerializable gränssnittet.
CA2241: Ange rätt argument för formateringsmetoder Det formatargument som skickas till String.Format innehåller inte ett formatobjekt som motsvarar varje objektargument eller vice versa.
CA2242: Testa för NaN korrekt Det här uttrycket testar ett värde mot Single.Nan eller Double.Nan. Använd Single.IsNan(Single) eller Double.IsNan(Double) för att testa värdet.
CA2243: Attributsträngliteraler ska parsas korrekt Ett attributs strängliteralparameter parsar inte korrekt för en URL, ett GUID eller en version.
CA2244: Duplicera inte indexerade elementinitieringar En objektinitierare har mer än en indexerad elementinitierare med samma konstanta index. Alla utom den sista initieraren är redundanta.
CA2245: Tilldela inte en egenskap till sig själv En egenskap tilldelades av misstag till sig själv.
CA2246: Tilldela inte en symbol och dess medlem i samma instruktion Att tilldela en symbol och dess medlem, dvs. ett fält eller en egenskap, i samma instruktion rekommenderas inte. Det är oklart om medlemsåtkomsten var avsedd att använda symbolens gamla värde före tilldelningen eller det nya värdet från tilldelningen i den här instruktionen.
CA2247: Argumentet som skickas till TaskCompletionSource-konstruktorn ska vara TaskCreationOptions-uppräkning i stället för TaskContinuationOptions-uppräkning TaskCompletionSource har konstruktorer som tar TaskCreationOptions som styr den underliggande aktiviteten och konstruktorer som tar objekttillstånd som lagras i aktiviteten. Om du av misstag skickar en TaskContinuationOptions i stället för en UppgiftSkapningSalternativ kommer anropet att behandla alternativen som tillstånd.
CA2248: Ange rätt "uppräkningsargument" till "Enum.HasFlag" Uppräkningstypen som skickas som ett argument till metodanropet HasFlag skiljer sig från den anropande uppräkningstypen.
CA2249: Överväg att använda String.Contains i stället för String.IndexOf Anrop till string.IndexOf där resultatet används för att söka efter förekomsten eller frånvaron av en delsträng kan ersättas med string.Contains.
CA2250: Använd ThrowIfCancellationRequested ThrowIfCancellationRequested kontrollerar automatiskt om token har avbrutits och genererar en OperationCanceledException om den har gjort det.
CA2251: Använd String.Equals över String.Compare Det är både tydligare och sannolikt snabbare att använda String.Equals i stället för att jämföra resultatet med String.Compare noll.
CA2252: Välj att förhandsgranska funktioner Välj att förhandsgranska funktioner innan du använder förhandsversions-API:er.
CA2253: Namngivna platshållare ska inte vara numeriska värden Namngivna platshållare i mallen för loggningsmeddelande bör inte bestå av endast numeriska tecken.
CA2254: Mallen ska vara ett statiskt uttryck Mallen för loggningsmeddelanden bör inte variera mellan anrop.
CA2255: Attributet ModuleInitializer ska inte användas i bibliotek Modulinitierare är avsedda att användas av programkod för att säkerställa att ett programs komponenter initieras innan programkoden börjar köras.
CA2256: Alla medlemmar som deklareras i överordnade gränssnitt måste ha en implementering i ett DynamicInterfaceCastableImplementation-attributgränssnitt Typer som tillskrivs DynamicInterfaceCastableImplementationAttribute fungerar som en gränssnittsimplementering för en typ som implementerar IDynamicInterfaceCastable typen. Därför måste den tillhandahålla en implementering av alla medlemmar som definierats i de ärvda gränssnitten, eftersom den typ som implementeras IDynamicInterfaceCastable inte ger dem något annat.
CA2257: Medlemmar som definierats i ett gränssnitt med "DynamicInterfaceCastableImplementationAttribute" ska vara "statiska" Eftersom en typ som implementerar kanske inte implementerar IDynamicInterfaceCastable ett dynamiskt gränssnitt i metadata, kommer anrop till en instansgränssnittsmedlem som inte är en explicit implementering som definierats för den här typen sannolikt att misslyckas vid körning. Markera nya gränssnittsmedlemmar static för att undvika körningsfel.
CA2258: Det går inte att tillhandahålla gränssnittet "DynamicInterfaceCastableImplementation" i Visual Basic För att tillhandahålla ett funktionellt DynamicInterfaceCastableImplementationAttribute-tillskrivet gränssnitt krävs funktionen Standardgränssnittsmedlemmar, som inte stöds i Visual Basic.
CA2259: Se till att ThreadStatic endast används med statiska fält ThreadStaticAttribute påverkar static endast fälten (Shared i Visual Basic). När det tillämpas på instansfält har attributet ingen inverkan på beteendet.
CA2260: Implementera allmänna matematiska gränssnitt korrekt Allmänna matematiska gränssnitt kräver att själva den härledda typen används för parametern själv återkommande typ.
CA2261: Använd ConfigureAwaitOptions.SuppressThrowing inte med Task<TResult> Alternativet ConfigureAwaitOptions.SuppressThrowing stöds inte av den generiska Task<TResult>, eftersom det kan leda till att ett ogiltigt TResultreturneras.
CA2262: Ange MaxResponseHeadersLength korrekt Kontrollera att värdet MaxResponseHeadersLength har angetts korrekt. Det här värdet mäts i kilobyte.
CA2264: Skicka inte ett icke-nullbart värde till "ArgumentNullException.ThrowIfNull" "ArgumentNullException.ThrowIfNull" genererar när det skickade argumentet är "null". Vissa konstruktioner som icke-nullable structs och "nameof()" och "new" uttryck är kända för att aldrig vara null, så "ArgumentNullException.ThrowIfNull" kommer aldrig att kasta.
CA2263: Föredrar allmän överlagring när typen är känd Att använda en allmän överlagring är att föredra framför att skicka ett System.Type argument när typen är känd, eftersom de främjar renare och mer typsäker kod med förbättrade kompileringstidskontroller.