単語のリストを含む配列をソートし、binarysearchを使って同じものを検索する必要があります。特定の理由により、単語リストは、「en-US」すなわち米国の地域設定のソートルールを使用して常にソートされなければならない。このコードはさまざまな国際的なオペレーティングシステムで動作しますが、もちろんこれは、使用している地域の地域設定に従って単語リストが別々にソートされることを意味します。リトアニア地域の設定で動作するコンピュータ/デバイスで問題が発生する可能性があります。どうして?ほとんどの言語での文字「Y」はX-Y -Zのようにソートされていますが、リトアニア語ではソート順がI-Y -Jです。この動作は私のプログラムに大混乱を引き起こすでしょう。デスクトップPC上で.net - Array.SortとArray.BinarySearchの問題 - 文化とグローバリゼーション
、私が使用して、アメリカ英語に一時的に地域設定を変更することができます:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture( "EN-US")
しかし、I以来、 Windows Mobile(CF.NET)用に開発していますが、このコードは実装できません。
私はデバイスの地域設定をプログラマチックに変更することができるハックを見つけましたが、「公式」ではないので危険なので、これらを避けることをお勧めします。
私の質問は、Array.SortとArray.BinarySearchを、デバイスで設定されている地域設定に関係なく、並べ替えや検索中にCultureInfo = "en-US"を使用するにはどうすればいいですか?
と配慮のCultureInfoに取る(および「EN-US」に設定)した比較子を実装するが、私は努力にもかかわらず、それを行う方法がわからない:
私が使用することができます信じています。もし誰かがVB.NetやC#でサンプルコードを投稿したり、その説明をする方法があれば、とても感謝しています。
CF.Netで動作する代替ソリューションについてご存じの方は、もちろん私はすべて耳にします。
ありがとうございました。
EDIT:
私は私の質問は明らかに私は英語との関連を維持したいと述べているので、受け入れソリューションとしてTwanfossonの答えを考えてみます。
しかし、私はGuffaの答えが最良だと信じています。どうして?別の例を使用しましょう:ドイツ語では、ÖはÖ -X-Zです。スウェーデン語とフィンランド語では、順序はX-Z-Öです。エストニア語ではソート順序はZ-Ö -Xです。複雑ではないですか? Guffaのソリューションは、ドイツの地域設定で実行されているデバイスでスウェーデンのソート(CultureInfoの変更)を強制することができます。 Comparer.DefaultInvariantを英語に関連付けると、この場合は役に立ちません。恐らくÖという文字がGuffaに送られます。