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 9 | 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 OrdinalIgnoreCase op. 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.