.NET String的内部格式是什么?

JCC*_*CyC 7 .net string unicode internals

我在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代码点需要更多.长度如何编码?

Joh*_*lan 17

在Jon Skeet出现之前,这是他在C#中关于字符串的优秀博客的链接.

至少在当前的实现中,字符串占用20+(n/2)*4字节(向下舍入n/2的值),其中n是字符串中的字符数.字符串类型的不寻常之处在于对象本身的大小各不相同

  • 呸骗子.对我来说不是很多,真的:) (12认同)

Ree*_*sey 9

.NET使用UTF-16.

来自MSDN上的System.String:

"字符串中的每个Unicode字符都由Unicode标量值定义,也称为Unicode代码点或Unicode字符的序数(数字)值.每个代码点使用UTF-16编码进行编码,每个代码点的数值都是编码的元素由Char对象表示."