我住在土耳其,我需要在我的计划中大写一把钥匙。我不得不使用ToUpper(新的CultureInfo(" en-US",false))而不是ToUpper(),因为此功能在设置为土耳其文化的计算机中表现不同(见下图)。然后我看到还有文化不变的上层函数:ToUpperInvariant()。
我搜索了但是我找不到这些功能之间的任何信息差异。是否有任何区别?
源:http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html
答案 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.
ς Σ ς
ϐ Β ϐ
ϑ Θ ϑ
ϕ Φ ϕ
ϖ Π ϖ
ϰ Κ ϰ
ϱ Ρ ϱ
ϵ Ε ϵ
ẛ Ṡ ẛ
ι Ι ι