当我使用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#中的强类型集合,我应该怎么做,我应该选择继承哪个类?
答案 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或+我将使用通用集合