此问题适用于 C#、.net Compact Framework 2 和 Windows CE 5 设备。
我在 .net DLL 中遇到了一个错误,该错误多年来一直在非常不同的 CE 设备上使用,但没有显示任何问题。突然,在新的 Windows CE 5.0 设备上,这个 bug 出现在以下代码中:
string s = "Print revenue receipt"; // has only single space chars
int i = s.IndexOf(" "); // two space chars
我希望 i 为 -1,但这直到今天才成立,当时 indexOf 突然返回 5。
由于使用时不会发生此行为
int i = s.IndexOf(" ", StringComparison.Ordinal);
,我很确定这是一种基于文化的现象,但我无法识别这种新设备的不同之处。它是已知设备的大致相同版本(只是更快的 cpu 和新板)。
两种设备:
- 运行具有相同本地化的 Windows CE 5.0
- System.Environment.Version 报告“2.0.7045.0”
- CultureInfo.CurrentUICulture 和 CultureInfo.CurrentCulture 报告“en-GB”(也使用“de-DE”进行测试)
- “所有”相关的注册表项都是相等的。
新设备预装了 CF 3.5,我实验性地重命名了它的 GAC 文件,描述的行为没有改变。由于在运行时总是报告版本 2.0.7045.0,我假设这些程序集没有效果。
虽然这并不难解决,但当事情看起来如此神奇时,我无法忍受。任何提示我错过了什么?
编辑:越来越陌生,见截图:
多一个: