从List或Collection继承

Ari*_*rie 2 c# vb.net

任何人都可以解释为什么不继承IList?我在这里看到很多输入,如果我需要为我的对象而不是IList提供自定义集合类,那么最好从Collection继承.这是为什么?为什么人们说不是从IList继承?如果可能请举个例子.

我认为它可能是这样的,所以为什么不使用它作为List提供更多功能:

class FootballTeam : List<FootballPlayer> 
{ 
}
Run Code Online (Sandbox Code Playgroud)

Eld*_*dho 5

收集界面概述.

这不提供直接答案,可能有概述

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,因此将具有很大的灵活性.