20
|
Jeppe Stig Nielsen · 技术社区 · 6 年前 |
1
8
首先要注意的是
constructor for
通读这些源代码,似乎大小写的差异是因为如果没有指定区域性,查找是如何进行的。
例如,它首先尝试了几件事,但是
then it will try
看一眼
static list of regions
.但因为它在使用
后来
it searches through all the cultures
(来自
我无法确认,因为我无法单步执行该代码,但我的猜测是,因为它正在按顺序遍历列表,它将到达
为什么不一致?
其中一条评论说,LinqPad即使使用大写字母也能找到切诺基。我不知道这是为什么。我能够复制它,但我也发现在VisualStudio中,当使用
影响一致性的一个因素是 缓存 :当它没有按文化+地区获得完全匹配时,它将做的第一件事 is check a cache of already-found cultures .它会降低缓存中所有密钥的大小写,因此此缓存不区分大小写。
你可以测试一下。我们知道使用
然后交换它们并再次运行:
这两个结果总是相等的,因为第一个区域性被缓存并用于下一个区域性。 代码之外可能有代码调用了相同的方法,并最终缓存了区域性值,从而改变了执行相同操作时得到的结果。 结论 尽管如此, the docs actually say :
所以这有点没有实际意义:你要求的是一个地区,而不是一种语言。如果你需要一种特定的语言,可以要求使用这种语言,而不仅仅是一个地区。 如果你想保证英语,那么:
|