Ich muss ein Array mit einer Liste von Wörtern sortieren und die gleiche Suche mit binarysearch. Aus bestimmten Gründen muß die Wortliste immer unter Verwendung der Sortierregeln von "en-US", d. H. American Regional Settings, sortiert werden. Der Code wird unter verschiedenen internationalen Betriebssystemen laufen und das bedeutet natürlich, dass die Wortliste entsprechend den verwendeten lokalen Ländereinstellungen anders sortiert wird. Ein Problem könnte auf einem Computer/Gerät auftreten, auf dem litauische Ländereinstellungen ausgeführt werden. Warum? Weil der Buchstabe "Y" in den meisten Sprachen wie X- Y -Z in Litauisch sortiert ist, ist die Sortierreihenfolge I- Y -J. Dieses Verhalten würde meinem Programm Schaden zufügen..net - Probleme mit Array.Sort und Array.BinarySearch - Kultur und Globalisierung
Auf einem Desktop-PC, könnte ich momentan die Ländereinstellungen in amerikanischem Englisch ändern, indem Sie mit:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture ("en-US")
aber da ich Ich entwickle für Windows Mobile (CF.NET), dieser Code ist nicht zu implementieren.
Ich habe ein paar Hacks gefunden, die mir erlauben, die regionalen Einstellungen auf dem Gerät programmatisch zu ändern, aber sie sind nicht "offiziell" und werden als riskant betrachtet, also ziehe ich es vor, diese zu vermeiden.
Meine Frage ist also: Wie kann ich Array.Sort und Array.BinarySearch zwingen, CultureInfo = "en-US" beim Sortieren und Suchen unabhängig von den auf dem Gerät eingestellten Ländereinstellungen zu verwenden?
Ich glaube, ich könnte:
Public Shared Function BinarySearch(Of T) (_
array As T(), _
value As T, _
comparer As IComparer(Of T) _
) As Integer
und Comparer Umsetzung in Betracht Culture nehmen (und setzen Sie sich auf „en-US“), aber ich weiß nicht, wie das hart trotz aller Bemühungen zu tun. Wenn irgendjemand einen Beispielcode in VB.Net oder C# posten könnte oder eine Erklärung, wie es geht, wäre ich sehr dankbar.
Wenn Sie über eine alternative Lösung wissen, die in CF.Net funktioniert, dann bin ich natürlich ganz Ohr.
Danke.
EDIT:
werde ich Twanfosson Antwort als die akzeptierte Lösung, da meine Frage klar gesagt der Meinung, dass ich eine Verbindung mit der englischen Sprache pflegen wollte.
Aber in Bezug auf Flexibilität glaube ich, dass Guffas Antwort die beste ist. Warum? Lassen Sie uns ein anderes Beispiel verwenden: Auf Deutsch ist der Buchstabe Ö sortiert Ö -X-Z während in Schwedisch und Finnisch ist die Bestellung X-Z- Ö. In Estnisch ist die Sortierreihenfolge Z- Ö -X. Kompliziert, nicht wahr? Guffas Lösung wird es mir erlauben, schwedisches Sortieren oder Ändern von CultureInfo auf einem Gerät durchzuführen, das unter deutschen regionalen Einstellungen ausgeführt wird. Mit Comparer.DefaultInvariant mit seiner Verbindung zu Englisch würde in diesem Fall nicht helfen, wahrscheinlich würde der Brief Ö mit O enden. Daher wird meine Abstimmung nach Guffa gehen.