我无法在MSDN上找到所以我在这里再次尝试:)当添加元素时,它的盒装和对新对象的引用被添加到集合中(如果它是值类型)或者如果元素是引用类型,只是参考被添加到arraylist。这是对的吗?
编辑:所以它只包含Object类的实例,其中每个实例引用堆上的值<
答案 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)
是的,只需添加参考。
这称为浅拷贝参考。在您的情况下,您必须实现深层复制,以便创建新对象并将值复制到其中。