2009-06-19 34 views
7

Tôi đang làm cho một số mã chuỗi thao tác chuyên sâu khá trong C# .NET và có tò mò về một số điều Joel Spolsky Tôi nhớ đọc một thời gian trở lại:Định dạng nội bộ của Chuỗi .NET là gì?

http://www.joelonsoftware.com/articles/fog0000000319.html
http://www.joelonsoftware.com/articles/Unicode.html

Vì vậy, như thế nào. NET làm điều đó? Hai byte cho mỗi char? Có một số ký tự Unicode^H^H^H^H^H điểm mã cần nhiều hơn thế. Và chiều dài được mã hóa như thế nào?

Trả lời

17

Trước khi Jon Skeet quay lại đây là liên kết đến số excellent blog on strings của bạn trong C#.

Trong triển khai hiện tại ít nhất, chuỗi mất 20+ (n/2) * 4 byte (làm tròn giá trị của n/2 xuống), trong đó n là số ký tự trong chuỗi. Loại chuỗi là bất thường ở chỗ kích thước của đối tượng chính nó thay đổi

+12

Bah humbug. Không nhiều hơn nữa để tôi nói, thực sự :) –

+4

Điều đó sẽ dạy bạn viết blog! –

+1

Nó không thực sự trên blog của tôi - đó là trên trang web bài viết của tôi :) Tôi nghĩ rằng tôi nên thương lượng một số loại chương trình chia sẻ lại. Đáng tiếc là một blogger/poster bài viết nghèo ... –

9

Sử dụng .NET UTF-16.

Từ System.String on MSDN:

"Mỗi ký tự Unicode trong một chuỗi được xác định bởi một giá trị vô hướng Unicode, còn gọi là điểm mã Unicode hoặc thứ tự (số) giá trị của ký tự Unicode Mỗi điểm mã được mã hóa sử dụng. Mã hóa UTF-16 và giá trị số của từng phần tử mã hóa được biểu thị bằng đối tượng Char. "

Các vấn đề liên quan