On MSDN我读到了这个:
AVOID定义结构,除非该类型具有以下所有特征:[...] 它的实例大小小于16个字节。
基于this post by Jon Skeet我得出结论,字符串内存使用量至少为20字节。
所以我想知道创建一个带有字符串成员的结构是否是好事。我知道上面提到的关于MSDN的文章指出了#34;避免"而不是"你不能"。话虽如此,我不确定为什么要提出16字节的限制。
答案 0 :(得分:4)
字符串数据不在结构内部。该结构只存储一个8字节的对象引用(如果在64位上)。
此限制意味着简单的性能启发式。大结构复制起来很昂贵。如果在您的情况下复制不是问题,您可以完全忽略该建议。
例如,如果您主要使用此类结构的大数组并通过引用访问数组元素,则不会进行复制。当您说bigArray[i].x++
时,这会直接修改x
。
主观说明:
我也不是像你所引用的那样广泛概括的粉丝。我发现更详细地了解性能特征可以让您完全废除这些简单的规则。但这不是这个问题的重点。