Điều này có thể đã được hỏi trước đây, nhưng tôi không thể tìm thấy bất kỳ bài đăng nào như vậy. Có một lớp học để làm việc với ASCII Strings? Những lợi ích rất nhiều:Lớp chuỗi ASCII nhanh và bộ nhớ hiệu quả cho .NET
- So sánh nên nhanh hơn kể từ chỉ byte-cho-byte (thay vì UTF-8 với mã hóa biến)
- Memory hiệu quả, nó nên sử dụng khoảng một nửa bộ nhớ trong chuỗi lớn
- phiên bản nhanh hơn của ToUpper()/ToLower() mà sử dụng một Look-Up-Table đó là ngôn ngữ bất biến
Jon Skeet đã viết một bản AsciiString implementation và chứng minh # 2, nhưng tôi đang tự hỏi nếu có ai mất thêm này và hoàn thành một lớp học như vậy. Tôi chắc chắn sẽ có sử dụng, mặc dù không có ai thường sẽ có một tuyến đường như vậy kể từ khi tất cả các chức năng String hiện có sẽ phải được thực hiện lại bằng tay. Và chuyển đổi giữa chuỗi <> AsciiString sẽ nằm rải rác ở khắp mọi nơi làm phức tạp một chương trình khác đơn giản.
Có lớp học như vậy không? Ở đâu?
Chỉ cần một vài nhận xét: Chuỗi .NET sử dụng UTF-16 trong nội bộ và bạn có thể tăng tốc độ so sánh rất nhiều bằng cách sử dụng [String.Compare] (http://msdn.microsoft.com/en-us/ thư viện/e6883c06.aspx) quá tải có một tham số [StringComparison] (http://msdn.microsoft.com/en-us/library/system.stringcomparison.aspx) và đặt nó thành Ordinal. – Dirk
Tổng hợp thông thường sử dụng các giá trị số nguyên của mã hóa UTF-16 trực tiếp. Nó không tính đến văn hóa hiện tại hoặc liệu biểu tượng ký tự giống nhau có thể được mô tả bởi nhiều hơn một điểm mã unicode hay không. So sánh các giá trị này thường trả về true, nhưng sai khi sử dụng thứ tự. – Dirk
Có, một số hàm chuỗi khác cũng nhận tham số StringComparison, bao gồm [String.IndexOf] (http://msdn.microsoft.com/en-us/library/system.string.indexof.aspx). – Dirk