Wijzigingen in hoofdlettergevoelige gevallen uitvoeren
De String.ToUppermethoden , String.ToLoweren Char.ToUpperChar.ToLower methoden bieden overbelastingen die geen parameters accepteren. Deze overbelastingen zonder parameters voeren standaard casewijzigingen uit op basis van de waarde van de CultureInfo.CurrentCulture. Dit produceert hoofdlettergevoelige resultaten die per cultuur kunnen variëren. Als u duidelijk wilt maken of hoofdlettergevoelige of cultuurgevoelige casewijzigingen moeten zijn, moet u de overbelasting van deze methoden gebruiken waarvoor u expliciet een culture
parameter moet opgeven. Geef CultureInfo.CurrentCulture
voor cultuurgevoelige hoofdlettergevoelige wijzigingen op voor de culture
parameter. Geef CultureInfo.InvariantCulture
voor wijzigingen in hoofdlettergevoelige hoofdletters op voor de culture
parameter.
Tekenreeksen worden vaak geconverteerd naar een standaardcase om later eenvoudiger op te zoeken. Wanneer tekenreeksen op deze manier worden gebruikt, moet u opgeven CultureInfo.InvariantCulture
voor de culture
parameter, omdat de waarde van Thread.CurrentCulture mogelijk kan veranderen tussen het tijdstip waarop de aanvraag wordt gewijzigd en de tijd waarop de zoekactie plaatsvindt.
Als een beveiligingsbeslissing is gebaseerd op een wijzigingsbewerking in een geval, moet de bewerking niet gevoelig zijn voor cultuur om ervoor te zorgen dat het resultaat niet wordt beïnvloed door de waarde van CultureInfo.CurrentCulture
. Zie de sectie 'Tekenreeksvergelijkingen die gebruikmaken van de huidige cultuur' van het artikel Aanbevolen procedures voor het gebruik van tekenreeksen voor een voorbeeld waarin wordt gedemonstreert hoe cultuurgevoelige tekenreeksbewerkingen inconsistente resultaten kunnen opleveren.
String.ToUpper en String.ToLower
Voor de duidelijkheid van code is het raadzaam dat u altijd overbelastingen van de String.ToUpper
en String.ToLower
methoden gebruikt waarmee u expliciet een cultuur kunt opgeven. Met de volgende code wordt bijvoorbeeld een id-zoekactie uitgevoerd. De key.ToLower
bewerking is standaard cultuurgevoelig, maar dit gedrag is niet duidelijk bij het lezen van de code.
Opmerking
Shared Function LookupKey(key As String) As Object
Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key)
{
return internalHashtable[key.ToLower()];
}
Als u wilt dat de key.ToLower
bewerking niet gevoelig is voor cultuur, wijzigt u het voorgaande voorbeeld als volgt om expliciet te gebruiken CultureInfo.InvariantCulture
bij het wijzigen van de case.
Shared Function LookupKey(key As String) As Object
Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture))
End Function
static object LookupKey(string key)
{
return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)];
}
Char.ToUpper en Char.ToLower
Hoewel de Char.ToUpper
en Char.ToLower
methoden dezelfde kenmerken hebben als de String.ToUpper
en String.ToLower
methoden, zijn de enige culturen die worden beïnvloed Turks (Türk culturen) en Azerbeidzjaans (Latijns, Azerbeidzjaans). Dit zijn de enige twee culturen met hoofdletterverschillen met één karakter. Zie de sectie 'Casing' in de String klassedocumentatie voor meer informatie over deze unieke casetoewijzing. Voor codehelderheid en om consistente resultaten te garanderen, is het raadzaam dat u altijd de overbelasting van deze methoden gebruikt die een CultureInfo parameter accepteren.