ArrayList.Add - 只添加引用?

时间:2011-01-19 15:15:59

标签: c# arraylist

我无法在MSDN上找到所以我在这里再次尝试:)当添加元素时,它的盒装和对新对象的引用被添加到集合中(如果它是值类型)或者如果元素是引用类型,只是参考被添加到arraylist。这是对的吗?

编辑:所以它只包含Object类的实例,其中每个实例引用堆上的值<

5 个答案:

答案 0 :(得分:3)

这是正确的。

但是,在实际代码中,您应该使用通用List<T>而不是ArrayList s。

答案 1 :(得分:1)

是的,这是对的。

ArrayList不是通用的(它来自Fx 1.1),并且有像

这样的成员
void Add(System.Object item)  { ... }

因此,只要您致电Add(x),就必须将x转换为System.Object类型的参考。任何对象引用都是一个简单的上传,但值类型需要Boxing。

在这里加入大多数人:你应该(几乎)不再使用它了。它仅适用于2005年之前开始的代码,也可能适用于您希望存储混合类型的极少数情况。

答案 2 :(得分:0)

是。这是对的。

列表与LT;&GT;但是,工作方式不同。

答案 3 :(得分:0)

是的,它是正确的,但你不应该使用ArrayList并坚持使用泛型。

答案 4 :(得分:0)

是的,只需添加参考。

这称为浅拷贝参考。在您的情况下,您必须实现深层复制,以便创建新对象并将值复制到其中。