struct的内存限制

时间:2016-03-08 12:26:30

标签: c# memory struct

On MSDN我读到了这个:

  

AVOID定义结构,除非该类型具有以下所有特征:[...]   它的实例大小小于16个字节。

基于this post by Jon Skeet我得出结论,字符串内存使用量至少为20字节。

所以我想知道创建一个带有字符串成员的结构是否是好事。我知道上面提到的关于MSDN的文章指出了#34;避免"而不是"你不能"。话虽如此,我不确定为什么要提出16字节的限制

1 个答案:

答案 0 :(得分:4)

字符串数据不在结构内部。该结构只存储一个8字节的对象引用(如果在64位上)。

此限制意味着简单的性能启发式。大结构复制起来很昂贵。如果在您的情况下复制不是问题,您可以完全忽略该建议。

例如,如果您主要使用此类结构的大数组并通过引用访问数组元素,则不会进行复制。当您说bigArray[i].x++时,这会直接修改x

主观说明:

我也不是像你所引用的那样广泛概括的粉丝。我发现更详细地了解性能特征可以让您完全废除这些简单的规则。但这不是这个问题的重点。

相关问题