Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tyto String.ToUpper, String.ToLower, Char.ToUpper a Char.ToLower metody poskytují přetížení, které nepřijímají žádné parametry. Ve výchozím nastavení tyto přetížení bez parametrů provádějí změny případu na základě hodnoty CultureInfo.CurrentCulture. Výsledkem je citlivost na velká a malá písmena, která se může lišit podle kulturního prostředí. Aby bylo jasné, zdali chcete, aby změny malých a velkých písmen byly kulturálně citlivé nebo necitlivé, měli byste použít přetížení těchto metod, které vyžadují explicitní zadání parametru culture. Pro kulturně citlivé změny velikosti písmen zadejte CultureInfo.CurrentCulture pro parametr culture. Pro změny velikosti písmen, které nejsou citlivé na jazykovou verzi, zadejte CultureInfo.InvariantCulture pro parametr culture.
Řetězce se často převedou na standardní případ, aby bylo možné snadněji vyhledávat později. Pokud se řetězce používají tímto způsobem, měli byste pro CultureInfo.InvariantCulture parametr zadat culture, protože hodnota Thread.CurrentCulture se může potenciálně změnit mezi časem změny případu a časem, kdy dochází k vyhledávání.
Pokud je bezpečnostní rozhodnutí založeno na operaci změny velikosti písmen, operace by měla být nezávislá na kulturním kontextu, aby se zajistilo, že výsledek nebude ovlivněn hodnotou CultureInfo.CurrentCulture. Podívejte se na část Porovnání řetězců, která používají aktuální jazykovou verzi, v článku Osvědčené postupy pro používání řetězců , kde je příklad ukazující, jak operace řetězců citlivé na jazykovou verzi můžou vést k nekonzistentním výsledkům.
"String.ToUpper" a "String.ToLower"
Pro srozumitelnost kódu se doporučuje vždy používat přetížení metod String.ToUpper a String.ToLower, které umožňují explicitně zadat kulturu. Například následující kód provede vyhledávání identifikátoru. Operace key.ToLower je ve výchozím nastavení citlivá na kulturní nastavení, ale toto chování není zřejmé z kódu.
Příklad
Shared Function LookupKey(key As String) As Object
Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key)
{
return internalHashtable[key.ToLower()];
}
**
Pokud chcete, aby operace key.ToLower nezohledňovala jazykovou nebo kulturní verzi, změňte předchozí příklad následujícím způsobem, aby se explicitně použil CultureInfo.InvariantCulture pro změnu velikosti písmen.
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 a Char.ToLower
I když metody Char.ToUpper a Char.ToLower mají stejné charakteristiky jako metody String.ToUpper a String.ToLower, jediné kultury, které jsou dotčeny, jsou turečtina (Turecko) a ázerbájdžánština (latinka, Ázerbájdžán). Jedná se o jediné dvě kulturní prostředí s rozdíly v jednoznakové velikosti písma. Další podrobnosti o tomto jedinečném mapování případů najdete v části Casing v String dokumentaci ke třídě. Pro přehlednost kódu a zajištění konzistentních výsledků doporučujeme vždy používat přetížení těchto metod, které přijímají CultureInfo parametr.