Erg*_*inn 17 c# string indexof
此问题适用于C#,. net Compact Framework 2和Windows CE 5设备.
我在.net DLL中遇到了一个错误,该错误在很多年的CE设备上使用多年,没有出现任何问题.突然,在新的Windows CE 5.0设备上,此错误出现在以下代码中:
string s = "Print revenue receipt"; // has only single space chars
int i = s.IndexOf(" "); // two space chars
Run Code Online (Sandbox Code Playgroud)
我希望我成为-1,但是直到今天才这样,当indexOf突然返回5时.
由于使用时不会发生此行为
int i = s.IndexOf(" ", StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)
,我很确定这是一种基于文化的现象,但我无法认识到这种新设备的不同之处.它是已知设备的大致相同版本(只是更快的CPU和新板).
两种设备:
新设备预安装了CF 3.5,其GAC文件我通过实验重命名,所描述的行为没有变化.由于在运行时始终报告版本2.0.7045.0,我假设这些程序集无效.
虽然这并不难解决,但是当事情看起来很神奇时我无法忍受.什么提示我缺少什么?
编辑:它变得陌生和陌生,看截图:

多一个:

在某些系统上,文化的东西确实看起来很神奇。经过多年的痛苦之后,我总是将文化信息手动设置为InvariantCulture我不明确希望不同文化有不同行为的地方。所以我的建议是:使该IndexOf检查始终使用相同的文化信息,如下所示:
int i = s.IndexOf(" ", StringComparison.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4346 次 |
| 最近记录: |