string.Empty在CLR中占用了多少空间

Mid*_*hat 4 .net string clr memory-management

string.EmptyCLR需要多少空间?
我猜这个NULL角色只有一个字节.

Jon*_*eet 8

不,字符串是一个完整的对象,有一个对象标题(包含类型引用,同步块等),长度和所需的任何字符...这将是一个单独的空字符(两个字节)和适当的填充圆形总共最多4或8个字节.

请注意,虽然.NET中的字符串有一个长度字段,但为了互操作,它们仍然是空终止的.空字符包含在长度中.

当然,string.Empty无论您使用多少次都只会引用单个对象...但引用将是4或8个字节,因此如果您有:

string a = string.Empty;
string b = string.Empty;
string c = string.Empty;
Run Code Online (Sandbox Code Playgroud)

这将是三个引用(12或24个字节)都指向同一个对象(大小约为20或24个字节).