Tôi cố gắng xử lý theo ký tự sau: ⨝ (http://www.fileformat.info/info/unicode/char/2a1d/index.htm)string.Empty.StartsWith (((char) 10781). ToString()) luôn trả về true?
Nếu bạn kiểm tra xem chuỗi rỗng có bắt đầu bằng ký tự này hay không, nó luôn trả về đúng, điều này không có ý nghĩa gì! Tại sao vậy?
// visual studio 2008 hides lines that have this char literally (bug in visual studio?!?) so i wrote it's unicode instead.
char specialChar = (char)10781;
string specialString = specialChar.ToString();
// prints 1
Console.WriteLine(specialString.Length);
// prints 10781
Console.WriteLine((int)specialChar);
// prints false
Console.WriteLine(string.Empty.StartsWith("A"));
// both prints true WTF?!?
Console.WriteLine(string.Empty.StartsWith(specialString));
Console.WriteLine(string.Empty.StartsWith(((char)10781).ToString()));
Văn hóa nhạy cảm-so sánh theo mặc định có vẻ giống như một vi phạm thảm họa lớn của nguyên tắc ít ngạc nhiên nhất. Có bất kỳ quy tắc nào để xác định phương pháp nào yêu cầu một StringComparison để có được hành vi thứ tự 'bình thường' hay không? – bobince
@ bobince- bạn đã thấy câu hỏi này- http: // stackoverflow chưa.com/questions/72696/mà-thường-tốt nhất-to-sử dụng-stringcomparison-ordinalignorecase-hoặc-stringcom – RichardOD