任何人都可以解释为什么不继承IList?我在这里看到很多输入,如果我需要为我的对象而不是IList提供自定义集合类,那么最好从Collection继承.这是为什么?为什么人们说不是从IList继承?如果可能请举个例子.
我认为它可能是这样的,所以为什么不使用它作为List提供更多功能:
class FootballTeam : List<FootballPlayer>
{
}
Run Code Online (Sandbox Code Playgroud)
这不提供直接答案,可能有概述
IList为您提供实现此功能的灵活性.
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
T this[int index] { get; set; }
int IndexOf(T item);
void Insert(int index, T item);
void RemoveAt(int index);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用
class FootballTeam : List<FootballPlayer>,可以扩展您的FootballTeam类中的属性.
理想情况下,当您想要扩展您的收藏时,它是必要的.假设您必须实现AddSort(T项)class FootballTeam : List<FootballPlayer>
如果你使用
class FootballTeam : ILIst<FootballPlayer>你可能会重新发明轮子Add(),并且Contains()应该由你自己实施
我建议使用 Composition over inheritance
class FootballTeam : //So here can use any team base class or anything necessary
{
public string TeamName;
public int RunningTotal
private List<FootballPlayer> _players
public IEnumerable<FootballPlayer> Players {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
更新
我已更新Players为IEnumerable,因此将具有很大的灵活性.
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |