Dot-Net

.NET 字元串的內部格式是什麼?

  • January 22, 2020

我在 C#.NET 中編寫了一些漂亮的字元串操作密集型程式碼,並對我記得不久前讀過的一些 Joel Spolsky 文章感到好奇:

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

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

那麼,.NET 是如何做到的呢?每個字元兩個字節?有一些 Unicode 字元^H^H^H^H^H 程式碼點需要更多。長度是如何編碼的?

在 Jon Skeet 出現之前,有一個連結指向他關於C#字元串的優秀部落格。

至少在目前實現中,字元串佔用 20+(n/2)*4 個字節(將 n/2 的值向下舍入),其中 n 是字元串中的字元數。字元串類型的不尋常之處在於對象本身的大小不同

.NET 使用UTF-16

MSDN 上的 System.String

“字元串中的每個 Unicode 字元由一個 Unicode 標量值定義,也稱為 Unicode 碼點或 Unicode 字元的序數(數字)值。每個碼點使用 UTF-16 編碼進行編碼,每個碼點的數值編碼元素由 Char 對象表示。”

引用自:https://stackoverflow.com/questions/1018915