Этот вопрос относится к устройствам С#,.net Compact Framework 2 и Windows CE 5.
Я столкнулся с ошибкой в DLL.net, которая использовалась на самых разных устройствах CE в течение многих лет, без каких-либо проблем. Внезапно на новом устройстве Windows CE 5.0 эта ошибка появилась в следующем коде:
string s = "Print revenue receipt"; // has only single space chars
int i = s.IndexOf(" "); // two space chars
Я ожидаю, что я будет -1, однако это было верно только до сегодняшнего дня, когда indexOf неожиданно вернул 5.
Поскольку это поведение не возникает при использовании
int i = s.IndexOf(" ", StringComparison.Ordinal);
я вполне уверен, что это феномен феномена, основанного на культуре, но я не могу распознать разницу, которое делает это новое устройство. Это в основном идентичная версия известного устройства (просто быстрый процессор и новая плата).
Оба устройства:
- запустить Windows CE 5.0 с идентичной локализацией
- Отчеты System.Environment.Version 2.0.0045.0
- CultureInfo.CurrentUICulture и CultureInfo.CurrentCulture report 'en-GB' (также тестируется с де-DE)
- "все" связанные ключи реестра равны.
Новое устройство имело предустановленную CF 3.5, чьи файлы GAC, которые я экспериментально переименовал, без изменений описанного поведения. Поскольку во время выполнения всегда сообщается версия 2.0.7045.0, я предполагаю, что эти сборки не имеют никакого эффекта.
Хотя это не сложно исправить, я не могу этого вынести, когда что-то кажется волшебным. Любые намеки на то, что мне не хватает?
Изменить: он становится незнакомцем и незнакомцем, см. снимок экрана:
Еще одно: