CA1309: Ordinaal StringComparison gebruiken

Eigenschappen Weergegeven als
Regel-id CA1309
Titel Ordinaal StringComparison gebruiken
Categorie Globalisatie
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Een tekenreeksvergelijkingsbewerking die niet-linguistisch is, stelt de StringComparison parameter niet in op Ordinaal of OrdinalIgnoreCase.

Beschrijving van regel

Veel tekenreeksbewerkingen, vooral de System.String.Compare en System.String.Equals methoden, bieden nu een overbelasting die een System.StringComparison opsommingswaarde als parameter accepteert.

Wanneer u StringComparison.Ordinaal of StringComparison.OrdinalIgnoreCase opgeeft, is de tekenreeksvergelijking niet-taalkundig. Dat wil gezegd: de functies die specifiek zijn voor de natuurlijke taal worden genegeerd wanneer er vergelijkingsbeslissingen worden genomen. Het negeren van natuurlijke taalfuncties betekent dat de beslissingen zijn gebaseerd op eenvoudige bytevergelijkingen en niet op casing- of equivalentietabellen die door cultuur worden geparameteriseerd. Als gevolg hiervan, door de parameter expliciet in te stellen op de StringComparison.Ordinal of StringComparison.OrdinalIgnoreCase, krijgt uw code vaak snelheid, verhoogt de juistheid en wordt betrouwbaarder.

Schendingen oplossen

Als u een schending van deze regel wilt oplossen, wijzigt u de vergelijkingsmethode voor tekenreeksen in een overbelasting die de System.StringComparison opsomming accepteert als een parameter en geeft u OrdinalIgnoreCaseop. Wijzig bijvoorbeeld String.Compare(str1, str2) in String.Compare(str1, str2, StringComparison.Ordinal).

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken wanneer de bibliotheek of toepassing is bedoeld voor een beperkt lokaal publiek of wanneer de semantiek van de huidige cultuur moet worden gebruikt.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook