Delen via


Gebruiksregels

Gebruiksregels ondersteunen het juiste gebruik van .NET.

In deze sectie

Regel Beschrijving
CA1801: Ongebruikte parameters controleren Een methodehandtekening bevat een parameter die niet wordt gebruikt in de hoofdtekst van de methode.
CA1816: Bel GC. SuppressFinalize correct Een methode die een implementatie van Dispose is, roept geen aan, GC.SuppressFinalizeof een methode die geen implementatie van Dispose aanroepen GC.SuppressFinalizeis, of een methodeaanroepen GC.SuppressFinalize en geeft iets anders dan this (Me in Visual Basic) door.
CA2200: Opnieuw verzamelen om stackdetails te behouden Er wordt een uitzondering opnieuw gestart en de uitzondering wordt expliciet opgegeven in de throw-instructie. Als een uitzondering opnieuw wordt uitgevoerd door de uitzondering in de throw-instructie op te geven, wordt de lijst met methodeaanroepen tussen de oorspronkelijke methode die de uitzondering heeft veroorzaakt en de huidige methode verloren gegaan.
CA2201: geen gereserveerde uitzonderingstypen genereren Hierdoor is de oorspronkelijke fout moeilijk te detecteren en fouten op te sporen.
CA2207: Waardetype statische velden inline initialiseren Een waardetype declareert een expliciete statische constructor. Als u een schending van deze regel wilt oplossen, initialiseert u alle statische gegevens wanneer deze wordt gedeclareerd en verwijdert u de statische constructor.
CA2208: Argument-uitzonderingen op de juiste manier instantiëren Er wordt een aanroep uitgevoerd naar de standaardconstructor (parameterloos) van een uitzonderingstype dat afkomstig is of is afgeleid van ArgumentException, of een onjuist tekenreeksargument wordt doorgegeven aan een geparameteriseerde constructor van een uitzonderingstype dat is of is afgeleid van ArgumentException.
CA2211: Niet-constante velden mogen niet zichtbaar zijn Statische velden die geen constanten of alleen-lezen zijn, zijn niet thread-veilig. Toegang tot een dergelijk veld moet zorgvuldig worden beheerd en vereist geavanceerde programmeertechnieken voor het synchroniseren van de toegang tot het klasseobject.
CA2213: Wegwerpvelden moeten worden verwijderd Een type waarmee velden worden geïmplementeerd System.IDisposable , declareert velden die ook worden geïmplementeerd IDisposable. De Dispose methode van het veld wordt niet aangeroepen door de Dispose methode van het declaratietype.
CA2214: Geen overschrijfbare methoden in constructors aanroepen Wanneer een constructor een virtuele methode aanroept, is het mogelijk dat de constructor voor het exemplaar dat de methode aanroept, niet is uitgevoerd.
CA2215: Verwijderingsmethoden moeten de basisklasse verwijderen aanroepen Als een type overneemt van een wegwerptype, moet het de Dispose methode van het basistype van een eigen Dispose methode aanroepen.
CA2216: Wegwerptypen moeten finalizer declareren Een type dat implementeert System.IDisposableen velden bevat die het gebruik van onbeheerde resources voorstellen, implementeert geen finalizer zoals beschreven door Object.Finalize.
CA2217: Opsommingen niet markeren met FlagsAttribute Een extern zichtbare opsomming wordt gemarkeerd met FlagsAttributeen heeft een of meer waarden die geen bevoegdheden hebben van twee of een combinatie van de andere gedefinieerde waarden in de opsomming.
CA2218: GetHashCode overschrijven bij het overschrijven van Equals Een openbaar type wordt overschreven System.Object.Equals , maar wordt niet overschreven System.Object.GetHashCode.
CA2219: Geen uitzonderingen genereren in uitzonderingsclausules Wanneer een uitzondering wordt gegenereerd in een laatste of foutcomponent, verbergt de nieuwe uitzondering de actieve uitzondering. Wanneer er een uitzondering wordt gegenereerd in een filtercomponent, wordt de uitzondering op de achtergrond door de runtime onderschept. Hierdoor is de oorspronkelijke fout moeilijk te detecteren en fouten op te sporen.
CA2224: Onderdrukking is gelijk aan overbelastingsoperator is gelijk aan Een openbaar type implementeert de gelijkheidsoperator, maar overschrijft System.Object.Equalsdeze niet.
CA2225: Overbelastingen van operatoren hebben alternatieve namen Er is een overbelasting van de operator gedetecteerd en de verwachte alternatieve methode is niet gevonden. Het benoemde alternatieve lid biedt toegang tot dezelfde functionaliteit als de operator en wordt geleverd voor ontwikkelaars die programma's uitvoeren in talen die geen overbelaste operators ondersteunen.
CA2226: Operators moeten symmetrische overbelastingen hebben Een type implementeert de gelijkheids- of ongelijkheidsoperator en implementeert niet de tegenovergestelde operator.
CA2227: Verzamelingseigenschappen mogen alleen-lezen zijn Met een beschrijfbare verzamelingseigenschap kan een gebruiker de verzameling vervangen door een andere verzameling. Met een alleen-lezen eigenschap wordt de verzameling niet meer vervangen, maar kan de afzonderlijke leden nog steeds worden ingesteld.
CA2229: Serialisatieconstructors implementeren Als u een schending van deze regel wilt oplossen, implementeert u de serialisatieconstructor. Voor een verzegelde klasse maakt u de constructor privé; anders moet u deze beveiligen.
CA2231: De operator Overbelasting is gelijk aan het overschrijven van ValueType.Equals Een waardetype overschrijft, maar implementeert de gelijkheidsoperator Object.Equals niet.
CA2234: System.Uri-objecten doorgeven in plaats van tekenreeksen Er wordt een aanroep uitgevoerd naar een methode met een tekenreeksparameter waarvan de naam 'uri', 'URI', 'urn', 'URN', 'URL' of 'URL' bevat. Het declaratietype van de methode bevat een bijbehorende overbelasting van de methode die een System.Uri parameter heeft.
CA2235: alle niet-serialiseerbare velden markeren Een exemplaarveld van een type dat niet serialiseerbare is, wordt gedeclareerd in een type dat serialiseerbaar is.
CA2237: Mark ISerializable types with SerializableAttribute Om te worden herkend door de common language runtime als serializable, moeten typen worden gemarkeerd met het kenmerk SerializableAttribute, zelfs als het type een aangepaste serialisatieroutine gebruikt via de implementatie van de ISerializable interface.
CA2241: Geef de juiste argumenten op voor het opmaken van methoden Het doorgegeven String.Format opmaakargument bevat geen opmaakitem dat overeenkomt met elk objectargument of omgekeerd.
CA2242: Testen op NaN correct Met deze expressie wordt een waarde getest op Single.Nan of Double.Nan. Gebruik Single.IsNan(Single) of Double.IsNan(Double) test de waarde.
CA2243: Letterlijke kenmerktekenreeksen moeten correct worden geparseerd De letterlijke parameter tekenreeks van een kenmerk parseert niet correct voor een URL, een GUID of een versie.
CA2244: Initialisaties van geïndexeerde elementen niet dupliceren Een object-initialisatiefunctie heeft meer dan één geïndexeerde element-initialisatiefunctie met dezelfde constante index. De laatste initialisatiefunctie is echter overbodig.
CA2245: Wijs geen eigenschap toe aan zichzelf Er is per ongeluk een eigenschap aan zichzelf toegewezen.
CA2246: Wijs geen symbool en het bijbehorende lid toe aan dezelfde instructie Het toewijzen van een symbool en het bijbehorende lid, dat wil zeggen, een veld of eigenschap, in dezelfde instructie wordt niet aanbevolen. Het is niet duidelijk of de toegang tot het lid bedoeld is om de oude waarde van het symbool vóór de toewijzing of de nieuwe waarde van de toewijzing in deze instructie te gebruiken.
CA2247: Argument dat is doorgegeven aan taskcompletionSource-constructor, moet de enum TaskCreationOptions zijn in plaats van taskContinuationOptions-enum TaskCompletionSource heeft constructors die TaskCreationOptions gebruiken die de onderliggende taak beheren en constructors die de objectstatus overnemen die zijn opgeslagen in de taak. Als u per ongeluk een TaskContinuationOptions doorgeeft in plaats van een TaskCreationOptions, wordt de aanroep als status behandeld.
CA2248: Geef het juiste argument enum op voor 'Enum.HasFlag' Het enum-type dat als argument aan de HasFlag methodeaanroep wordt doorgegeven, verschilt van het aanroepende enum-type.
CA2249: Overweeg het gebruik van String.Contains in plaats van String.IndexOf Aanroepen naar string.IndexOf waar het resultaat wordt gebruikt om te controleren op de aanwezigheid of afwezigheid van een subtekenreeks kan worden vervangen door string.Contains.
CA2250: Gebruik ThrowIfCancellationRequested ThrowIfCancellationRequested controleert automatisch of het token is geannuleerd en genereert een OperationCanceledException als het is.
CA2251: Gebruiken String.Equals via String.Compare Het is zowel duidelijker als sneller te gebruiken String.Equals in plaats van het resultaat van String.Compare nul te vergelijken.
CA2252: Aanmelden voor preview-functies Meld u aan voor preview-functies voordat u preview-API's gebruikt.
CA2253: Benoemde tijdelijke aanduidingen mogen geen numerieke waarden zijn Benoemde tijdelijke aanduidingen in de sjabloon voor logboekregistratieberichten mogen niet bestaan uit alleen numerieke tekens.
CA2254: Sjabloon moet een statische expressie zijn De sjabloon voor logboekregistratieberichten mag niet per aanroep verschillen.
CA2255: Het ModuleInitializer kenmerk mag niet worden gebruikt in bibliotheken Module-initializers zijn bedoeld om te worden gebruikt door toepassingscode om ervoor te zorgen dat de onderdelen van een toepassing worden geïnitialiseerd voordat de toepassingscode wordt uitgevoerd.
CA2256: Alle leden die in bovenliggende interfaces zijn gedeclareerd, moeten een implementatie hebben in een DynamicInterfaceCastableImplementation-toegeschreven interface Typen die worden toegeschreven aan DynamicInterfaceCastableImplementationAttribute fungeren als een interface-implementatie voor een type dat het IDynamicInterfaceCastable type implementeert. Als gevolg hiervan moet het een implementatie bieden van alle leden die zijn gedefinieerd in de overgenomen interfaces, omdat het type dat wordt geïmplementeerd IDynamicInterfaceCastable , ze anders niet levert.
CA2257: Leden die zijn gedefinieerd op een interface met DynamicInterfaceCastableImplementationAttribute, moeten statisch zijn Aangezien een type dat wordt geïmplementeerd geen dynamische interface in metagegevens kan IDynamicInterfaceCastable implementeren, zullen aanroepen naar een exemplaarinterfacelid dat geen expliciete implementatie is die voor dit type is gedefinieerd, waarschijnlijk mislukken tijdens de uitvoering. Markeer nieuwe interfaceleden static om runtimefouten te voorkomen.
CA2258: Het leveren van een Interface DynamicInterfaceCastableImplementation in Visual Basic wordt niet ondersteund Voor het bieden van een functionele DynamicInterfaceCastableImplementationAttributeinterface is de functie Standaardinterfaceleden vereist. Deze functie wordt niet ondersteund in Visual Basic.
CA2259: Zorg ervoor dat ThreadStatic deze alleen wordt gebruikt met statische velden ThreadStaticAttribute is alleen van invloed op static (Shared in Visual Basic)-velden. Wanneer het kenmerk wordt toegepast op exemplaarvelden, heeft het kenmerk geen invloed op het gedrag.
CA2260: algemene wiskundige interfaces correct implementeren Voor algemene wiskundige interfaces moet het afgeleide type zelf worden gebruikt voor de zelf-terugkerende typeparameter.
CA2261: Niet gebruiken ConfigureAwaitOptions.SuppressThrowing met Task<TResult> De ConfigureAwaitOptions.SuppressThrowing optie wordt niet ondersteund door de algemene Task<TResult>, omdat dit kan leiden tot het retourneren van een ongeldige TResult.
CA2262: Juist instellen MaxResponseHeadersLength Zorg ervoor dat de MaxResponseHeadersLength waarde juist is opgegeven. Deze waarde wordt gemeten in kilobytes.
CA2264: Geef geen niet-null-waarde door aan 'ArgumentNullException.ThrowIfNull' 'ArgumentNullException.ThrowIfNull' genereert wanneer het doorgegeven argument null is. Bepaalde constructies zoals niet-null-structs en 'nameof()' en 'nieuwe' expressies zijn nooit null, dus 'ArgumentNullException.ThrowIfNull' wordt nooit gegooid.
CA2265: Niet vergelijken met Span<T> null of default Een periode vergelijken met null of default doen mogelijk niet wat u bedoelde. default en de null letterlijke worden impliciet geconverteerd naar Span<T>.Empty.
CA2263: Voorkeur geven aan algemene overbelasting wanneer type bekend is Het gebruik van een algemene overbelasting verdient de voorkeur om een System.Type argument door te geven wanneer het type bekend is, omdat ze schonere en meer typeveilige code bevorderen met verbeterde compileertijdcontroles.