Ich habe eine Frage im Zusammenhang mit Zeichenfolgenvergleich vs. Zeichenvergleich.String-Vergleich und alphabetische Reihenfolge der einzelnen Zeichen
Die Zeichen >
und 0
(Null) haben die folgenden Dezimalwerte 62
und 48
entsprechend.
Wenn ich zwei Zeichen in dem folgenden Code vergleichen, bekomme ich Wert True
(was richtig ist)
Console.WriteLine('>' > '0');
Als ich zwei Ein-Zeichenkette in dem folgenden Code vergleichen, bekomme ich Wert -1
, die anzeigt, dass ">" kleiner als "0" (Standardkultur ist Englisch)
Console.WriteLine(string.Compare(">", "0"));
Während Vergleich von "3" und "1" (51
und 49
Code valu n) in dem folgenden Code gibt 1
(wie erwartet)
Console.WriteLine(string.Compare("3", "1"));
Auch string.Compare(string str1, string str2)
Dokumentation sagt:
Der Vergleich der aktuellen Kultur verwendet kulturspezifische Informationen wie Gehäuse Regeln zu erhalten und die alphabetische Reihenfolge der einzelner Zeichen
Würden Sie in der Lage sein, zu erklären (oder Verweises auf einige Unterlagen zur Verfügung stellen), wie s Der Vergleich wird z. wie alphabetische Reihenfolge der einzelnen Zeichen berechnet usw.?
[MSDN] (http://msdn.microsoft.com/en-us/library/84787k22.aspx) sagt: „String.Compare (strA, strB) - Weniger als Null - strA weniger als strB. " Zum Beispiel ergibt 'string.Compare (" A "," B ")' '-1' -' "A" 'ist kleiner als' "B" '. Warum ist '"> "' kleiner als '" 0 "'? – dtb
Ich habe meine Frage aktualisiert: Wenn Sie "3" mit "1" vergleichen, erhalten Sie den Wert "1", wobei "3" den Code 51 und "1" den Code 49 (wie erwartet) hat. Das passt also nicht zu deiner Erklärung. – Alexandar
@Alexandar guter Punkt. Ich glaube, PeteKirkham hat darauf besser geantwortet als ich. – DiskJunky