当前位置:  开发笔记 > 编程语言 > 正文

从List或Collection继承

如何解决《从List或Collection继承》经验,为你挑选了1个好方法。

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

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

class FootballTeam : List 
{ 
}

Eldho.. 5

收集界面概述.

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

IList为您提供实现此功能的灵活性.

public interface IList : ICollection, IEnumerable, IEnumerable
{
    T this[int index] { get; set; }

    int IndexOf(T item);
    void Insert(int index, T item);
    void RemoveAt(int index);
}

如果您使用class FootballTeam : List,可以扩展您的FootballTeam类中的属性.

理想情况下,当您想要扩展您的收藏时,它是必要的.假设您必须实现AddSort(T项)class FootballTeam : List

如果你使用class FootballTeam : ILIst你可能会重新发明轮子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 _players
  public IEnumerable Players {get;set;}
}

更新 我已更新Players为IEnumerable,因此将具有很大的灵活性.



1> Eldho..:

收集界面概述.

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

IList为您提供实现此功能的灵活性.

public interface IList : ICollection, IEnumerable, IEnumerable
{
    T this[int index] { get; set; }

    int IndexOf(T item);
    void Insert(int index, T item);
    void RemoveAt(int index);
}

如果您使用class FootballTeam : List,可以扩展您的FootballTeam类中的属性.

理想情况下,当您想要扩展您的收藏时,它是必要的.假设您必须实现AddSort(T项)class FootballTeam : List

如果你使用class FootballTeam : ILIst你可能会重新发明轮子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 _players
  public IEnumerable Players {get;set;}
}

更新 我已更新Players为IEnumerable,因此将具有很大的灵活性.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有