この質問はC#、.NET Compact Framework 2およびWindows CE 5デバイスに適用されます。C#string.IndexOf()は予期しない値を返します
非常に異なるCEデバイスで使用されていた.net DLLに問題が発生していないバグが発生しました。突然、新しいWindows CE 5.0デバイス上で、このバグは、次のコードに登場:
string s = "Print revenue receipt"; // has only single space chars
int i = s.IndexOf(" "); // two space chars
私はindexOfのは突然5.
を返したとき、しかし、これは今日までだけ本当だった、私は-1であることを期待int i = s.IndexOf(" ", StringComparison.Ordinal);
を使用している場合、この現象は発生しませんので、私はこれは文化ベースphenomenomであることをかなり確信しているが、私は、この新しいデバイスが作る違いを認識することはできません。これは、既知のデバイス(ちょうど高速のCPUと新しいボード)とほとんど同じバージョンです。
両デバイス:同じ局在化と
- 実行のWindows CE 5.0
- System.Environment.Versionレポート '2.0.7045.0'
- CultureInfo.CurrentUICultureとCultureInfo.CurrentCultureレポート 'エンGB' (「de-DE」でもテスト済み)
- 「すべての」関連するレジストリキーは等しいです。
新しいデバイスにはCF 3.5がプリインストールされていました.GACファイルの名前は実験的に変更されていましたが、記述された動作に変更はありません。実行時には常にバージョン2.0.7045.0が報告されるので、これらのアセンブリは何の効果もないと仮定します。
これは修正するのが難しくありませんが、私はそれが魔法のように見えるときはそれに耐えられません。私は何が欠けていたかのヒント?
編集:それは見知らぬ人を取得し、見知らぬされ、スクリーンショットを参照してください。
つ以上:
あなたはこの_exact_コードを実行して5を取得しますか? –
もちろん、上記の私のスクリーンショットを参照してください。私もその問題を修正しました。面白い点: * s = "収益の印刷"; //結果-1 * s = "Drucke Beleg aus"; //結果-1(!) plsは私の頻繁な編集を許しています。 –
http://i.stack.imgur.com/iGxNb.png –