ToUpperInvariant()和ToUpper(new CultureInfo(" en-US",false))有什么区别

时间:2018-03-20 12:33:27

标签: c# .net

我住在土耳其,我需要在我的计划中大写一把钥匙。我不得不使用ToUpper(新的CultureInfo(" en-US",false))而不是ToUpper(),因为此功能在设置为土耳其文化的计算机中表现不同(见下图)。然后我看到还有文化不变的上层函数:ToUpperInvariant()。

我搜索了但是我找不到这些功能之间的任何信息差异。是否有任何区别?

enter image description here enter image description here

源:http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html

1 个答案:

答案 0 :(得分:4)

ToUpper()ToUpper(CultureInfo.CurrentCulture)相同, 虽然ToUpperInvariant()ToUpper(CultureInfo.InvariantCulture)相同,但评论暗示您已经明白了这一点。

当然,这里存在差异 - CultureInfo.InvariantCulture只应在不与人类交互时使用(解析器等),因为它提供了一致的结果,而ToUpper(CultureInfo.CurrentCulture)之间的差异很大电脑,服务器等

CultureInfo.InvariantCulture是一种英语启发的文化,类似于但不等于en-US,并且不受任何国家或地区的约束,也无法由用户自定义(如{{3}中明确指出的那样) })。

至于明确回答有关ToUpper的问题 - 是的,存在差异。在所有这些情况下(如下所示),ToUpperInvariant()与小写来源相同char

lc    en-US     Invariant
==    =====     =========

µ     Μ         µ
ı     I         ı
ſ     S         ſ
Dž     DŽ         Dž
Lj     LJ         Lj
Nj     NJ         Nj
Dz     DZ         Dz
ͅ      Ι         ͅ  //  ͅͅͅͅͅͅͅthis one lives in the 4th dimension. 
ς     Σ         ς
ϐ     Β         ϐ
ϑ     Θ         ϑ
ϕ     Φ         ϕ
ϖ     Π         ϖ
ϰ     Κ         ϰ
ϱ     Ρ         ϱ
ϵ     Ε         ϵ
ẛ     Ṡ         ẛ
ι     Ι         ι