Share via


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.

Zie ook