【发布时间】:2012-01-13 07:49:11
【问题描述】:
是否有人碰巧知道,在 .NET(4.0,如果重要的话)中,数组的 Length 属性或 List<T> 的 Count 属性是否在计算后存储,直到数组/列表变了吗?
我之所以这么问,是因为我正在开发的一个记录链接程序已经足够复杂了,如果我能帮上忙,我宁愿不要在上面添加另一个 O(n)。
与此类似,实例化的 System.String 的哈希码是否已被记忆?通过调试器查看它,我可以看到 List<T> 有一个私有 _size 成员,可能是 Count 获取其值的地方,但我看不到 int[] 或字符串表明它们存储它任何地方。
我可以看到大小与速度之间的权衡,但谁能确定是否有支持这些字段的支持字段?例如,由于在 C# 中,字符串是不可变的,所以在第一次调用 GetHashCode 时计算哈希码并将其存储以供以后使用不是有意义吗?
【问题讨论】:
-
谢谢,@MikeChristensen
-
我想给某人答案,但我还是想知道GetHashCode()的值是否被记忆。
标签: c#