String.ToUpper、String.ToLower、Char.ToUpper 和 Char.ToLower 方法提供不接受任何參數的多載。 在預設情況下,這些沒有參數的多載會根據 CultureInfo.CurrentCulture 的值執行大小寫變更。 這會產生可能因文化特性而異的區分大小寫結果。 無論您要讓大小寫變更成為區分文化特性或是不區分文化特性,為了讓目的更清楚,您應該使用這些方法 (需要您明確指定 culture 參數) 的多載。 若要進行區分文化特性的大小寫變更,請指定 CultureInfo.CurrentCulture 做為 culture 參數。 若要進行不區分文化特性的大小寫變更,請指定 CultureInfo.InvariantCulture 做為 culture 參數。
通常字串會轉換為標準大小寫以方便日後查閱。 當字串以這種方式使用時,您應該指定 CultureInfo.InvariantCulture 做為 culture 參數,因為在大小寫變更到查閱執行之間,Thread.CurrentCulture 的值可能會有變更。
如果是根據大小寫變更作業進行安全性決策,則作業應該不區分文化特性,以確保結果不受 CultureInfo.CurrentCulture 的值影響。 請參閱自訂大小寫對應和排序規則,其中的範例示範了區分文化特性的字串作業如何產生不一致的結果。
使用 String.ToUpper 和 String.ToLower 方法
為了使程式碼更為明確,建議您一律使用 String.ToUpper 和 String.ToLower 方法的多載,讓您可以明確指定 culture 參數。 例如,下列程式碼會執行識別項查詢。 key.ToLower 作業會在預設情況下區分文化特性,但從程式碼的閱讀中,並無法清楚得知這樣的行為。
範例
Shared Function LookupKey(key As String) As Object
Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key)
{
return internalHashtable[key.ToLower()];
}
如果想讓 key.ToLower 作業不區分文化特性,應該將上述範例變更如下,以便在變更大小寫時,明確使用 CultureInfo.InvariantCulture。
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 和 Char.ToLower 方法
雖然 Char.ToUpper 和 Char.ToLower 方法具有與 String.ToUpper 和 String.ToLower 方法相同的特性,但是受到影響的文化特性只有土耳其文 (土耳其) 和阿澤里文 (拉丁,亞塞拜然)。 這是僅有的兩個具有單一字元大小寫差異的文化特性。 如需這個獨特大小寫對應的詳細資訊,請參閱自訂大小寫對應和排序規則。 為了使程式碼更為明確及確保結果一致,建議您一律使用這些方法的多載,以便能夠明確指定 culture 參數。