Tôi có một câu hỏi liên quan đến so sánh chuỗi so với so sánh nhân vật.So sánh chuỗi và thứ tự chữ cái của các nhân vật riêng lẻ
Ký tự >
và 0
(số không) có giá trị thập phân sau 62
và 48
tương ứng.
Khi tôi so sánh hai nhân vật trong đoạn mã sau, tôi nhận được giá trị True
(đó là chính xác)
Console.WriteLine('>' > '0');
Khi tôi so sánh hai chuỗi một nhân vật trong đoạn mã sau, tôi nhận được giá trị -1
mà chỉ ra rằng ">" nhỏ hơn "0" (văn hóa mặc định là tiếng Anh)
Console.WriteLine(string.Compare(">", "0"));
trong khi so sánh giữa "3" và "1" (51
và 49
đang valu es) trong mã sau trả 1
(như mong đợi)
Console.WriteLine(string.Compare("3", "1"));
Ngoài ra, string.Compare(string str1, string str2)
tài liệu nói:
Việc so sánh sử dụng văn hóa hiện tại để có được văn hóa cụ thể thông tin như quy tắc vỏ và thứ tự chữ cái của các ký tự riêng lẻ
Bạn có thể giải thích (hoặc cung cấp tham chiếu đến một số tài liệu) không? so sánh tring được triển khai, ví dụ: cách thứ tự chữ cái của các ký tự riêng lẻ được tính như thế nào?
[MSDN] (http://msdn.microsoft.com/en-us/library/84787k22.aspx) nói "String.Compare (Stra, strB) - Ít hơn zero - Stra ít hơn strB. " Ví dụ, 'string.Compare (" A "," B ")' trả về '-1' -' "A" 'nhỏ hơn' "B" '. Tại sao '"> "' nhỏ hơn '" 0 "'? – dtb
Tôi đã cập nhật câu hỏi của mình: khi bạn so sánh "3" với "1", bạn nhận giá trị '1' trong đó" 3 "có mã 51 và" 1 "có mã 49 (như mong đợi). Vì vậy, điều đó không phù hợp với lời giải thích của bạn. – Alexandar
@ Alexandar điểm tốt. Tôi nghĩ PeteKirkham đã trả lời nó tốt hơn tôi – DiskJunky