Mam pytanie dotyczące porównywania ciągów znaków w porównaniu do porównywania znaków.Porównanie ciągów i kolejność alfabetyczna pojedynczych znaków
Znaki >
i 0
(zero) mają odpowiednio następujące wartości dziesiętne 62
i 48
.
Kiedy porównać dwa znaki w poniższym kodzie, otrzymuję wartość True
(która jest poprawna)
Console.WriteLine('>' > '0');
Kiedy porównać dwa ciągi jedna postać w poniższym kodzie otrzymuję wartość -1
co oznacza, że ">" jest mniej niż "0" (domyślnie kultura jest angielski)
Console.WriteLine(string.Compare(">", "0"));
Zważywszy porównania "3" i "1" (51
i 49
kodu VALU ES) w następującym kodzie zwraca 1
(zgodnie z oczekiwaniami)
Console.WriteLine(string.Compare("3", "1"));
Również string.Compare(string str1, string str2)
dokumentacja mówi:
Porównanie wykorzystuje obecną kulturę, aby uzyskać specyficzne kulturowo informacje, takie jak przepisy obudowa i kolejność alfabetyczna indywidualne znaki
Czy mógłbyś wyjaśnić (lub podać odniesienie do niektórych dokumentów) w jaki sposób s Porównanie zaimplementowane jest np. w jaki sposób kolejność alfabetyczna poszczególnych znaków jest obliczana itp?
[MSDN] (http://msdn.microsoft.com/en-us/library/84787k22.aspx) mówi „String.Compare (Stra, Strb) - Mniej niż zero - Stra jest mniej niż strB. " Na przykład 'string.Compare (" A "," B ")' zwraca '-1' -' "A" 'jest mniejsze niż' "B" '. Dlaczego ''> "' less than '" 0 "'? – dtb
Zaktualizowałem moje pytanie: gdy porównasz "3" do "1", otrzymasz wartość "1", gdzie "3" ma kod 51, a "1" kod 49 (zgodnie z oczekiwaniami). To nie pasuje do twojego wyjaśnienia. – Alexandar
@Alexandar dobry punkt. Myślę, że PeteKirkham odpowiedział na to lepiej niż ja – DiskJunky