ArrayList有什么问题?

fis*_*ead 20 .net c# generics collections arraylist

最近我问了一个关于SO的问题,提到了c#ArrayList可能用于解决方案.有人评论说使用arraylist是不好的.我想更多关于这一点.我之前从未听过关于arraylists的声明.sombody让我快速了解使用arraylists可能出现的性能问题

C#.达网络-2-

Ode*_*ded 37

ArrayList的主要问题是使用object- 它意味着您必须对所封装的内容进行强制转换.它是泛型前几天的残余,可能只是为了向后兼容.

您没有使用通用列表的ArrayList类型安全性.性能问题是需要将对象强制转换回原始对象(或者发生隐式装箱).

每当您使用值类型时都会发生隐式装箱 - 它会在放入ArrayList时被装箱,并在被引用时被取消装箱.

问题不仅在于性能问题,还在于可读性和正确性.由于泛型进入,这个对象已经过时,只有在.NET 1.0/1.1代码中才需要.

  • 也类型安全 (4认同)

Ree*_*sey 14

如果您正在存储值类型(int,float,double等 - 或任何结构),ArrayList将导致每个存储上的装箱,并在每个元素访问时取消装箱.这可能是对性能的重大打击.

此外,ArrayList完全缺乏类型安全性.由于所有内容都存储为"对象",因此作为开发人员,您需要承担额外的负担,以确保其安全.

此外,如果您想要存储对象的行为,您可以随时使用List<object>.相比ArrayList没有任何缺点,它有一个很大的(IMO)优势:它使你的意图(存储一个无类型的对象)从一开始就清晰.

ArrayList实际上只存在于.NET 1.1代码中,并且只应该使用它.没有理由在.NET 2+中使用它.