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

标签 .net string clr memory-management

string.Empty有多少空间接受CLR?
我猜它只是 NULL 的一个字节特点。

最佳答案

不,字符串是一个完整的对象,具有对象头(包含类型引用、同步块(synchronized block)等)、长度以及所需的任何字符......这将是一个空字符(两个字节)和适当的填充以进行舍入总共最多 4 或 8 个字节。

请注意,尽管 .NET 中的字符串有一个长度字段,但为了互操作,它们仍然以空值结尾。长度中不包含空字符。

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

string a = string.Empty;
string b = string.Empty;
string c = string.Empty;

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

关于.net - string.Empty 在 CLR 中占用多少空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079753/

相关文章:

c++ - C++ CLR 值类型上需要 pin_ptr,为什么?

c# - 指定 CLR 存储过程的 SqlString 长度

c# - 如何将指向 JavaScript 文件的链接添加到特定 ASP .NET MVC 页面的页眉中

.net - Windows 应用商店有类似控制台的 API 吗?

c# - 集合的 Where 子句

java - 在 Java 中从字符串创建大小图像

css - css 属性 "top"是 javascript 中的字符串还是数字?

c# - SharpDX - System.Drawing 互操作性

使用向量而不是 R 中的正则表达式从字符串中删除多个单词

c# - 像 C# 方法 IL 一样发出 IL 但获取 System.InvalidProgramException : Common Language Runtime detected an invalid program