Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1309 |
| Titel | Ordinaal StringComparison gebruiken |
| Categorie | Globalisatie |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Nee |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
Een tekenreeksvergelijkingsbewerking die niet-linguïstisch is, stelt de StringComparison-parameter niet in op Ordinal 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.Ordinal 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.
Hoe schendingen op te lossen
Als u een schending van deze regel wilt oplossen, wijzigen u de vergelijkingsmethode voor tekenreeksen in een overbelasting die de System.StringComparison opsomming accepteert als een parameter, en specificeer daarbij Ordinal of OrdinalIgnoreCase. 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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.