强类型ArrayLists是C#中更好的选择吗?

时间:2009-11-14 23:34:15

标签: c# .net arraylist

当我使用C#编程时,有时我需要强类型集合:

我经常创建一个继承自ArrayList

的类
using System.Collections;
public class Emails: ArrayList
{
  public new Email this[int i]
  {
     get
     {
        return (Email)base[i];
     }
     set
     {
        base[i] = value;
     }
  }
}

我意识到这可能不是从集合继承的正确方法。如果我想继承C#中的强类型集合,我应该怎么做,我应该选择继承哪个类?

7 个答案:

答案 0 :(得分:15)

您想要的是通用,例如List<T>

public class Emails : List<Email>
{
}

这有ArrayList的所有方法,然后是一些,你可以获得类型安全而无需做任何额外的工作。

但请注意,从List<T>继承有时会给您带来更多麻烦。更好的想法是实现ICollection<T>IEnumerable<T>,并在内部使用List<T>来实现接口。

答案 1 :(得分:9)

忘记ArrayList和List。要做的“正确”的事情是从Collection派生并将你的类称为以Collection结尾的东西。

public sealed class EmailCollection : Collection<Email>
{

}

答案 2 :(得分:5)

如果你没有坚持.Net 1.1,你真的应该忘记ArrayList并使用通用List<T>代替。你可以获得强劲的打字和更好的表现。

答案 3 :(得分:3)

一般情况下,如果可能的话,应该避免成员申报{。}}。

从C#2开始,虽然你可以使用泛型。 new

答案 4 :(得分:2)

不是,这就是泛型的用途。

答案 5 :(得分:1)

仿制药看起来更合适。例如,

List<email> 

在这种情况下。为什么重新发明轮子并且表现更差?

答案 6 :(得分:0)

如果您使用.net 2.0或+我将使用通用集合