Collection personnalisée à l'aide de IEnumerable vs ICollection vs IList

J'ai besoin de concevoir mon propre GenericCollection classe. Maintenant, j'ai beaucoup d'options à le calculer à l'aide de IEnumerable, ICollection, et IList, où, plus tard propose quelques fonctions supplémentaires.

Je suis un peu confus que si je pars avec IEnumerable<T> je peut exiger la déclaration de l'objet à fait tenir la collection comme dans ce cas _list.

public class GenericCollection<T> : IEnumerable<T>
{
    private List<T> _list;
    //...
}

Mais si j'y vais avec ICollection<T> ou IList<T>, je n'ai pas besoin de déclarer la List objet tel qu'il est implicitement disponibles.

public class GenericCollection<T> : IList<T>
{
    //no need for List object
    //private List<T> _list; 
    //...
}

Quelle est la différence entre ces deux approches à l'égard de performance?

Dans le scénario de chacun est préféré en particulier quand il s'agit de la conception de votre propre collection. Je suis intéressé par le poids léger de la collection avec de bonnes performances. Je pense que cela peut être réalisé en utilisant des IEnumerable<T> mais comment exactement, avec quelques bonnes raisons pour aller avec elle?

J'ai examiné certains postes existants, mais aucun n'est de donner les renseignements nécessaires.

De retour 'IList' vs 'ICollection' vs 'Collection'

  • vous n'êtes pas obligé d'avoir _list membre dans le premier exemple. En outre, vous avez encore de mettre en œuvre certains mécanismes de stockage en cas de inhering de IList et de mise en œuvre de l'interface à l'égard de IList
  • Collection générique? sonne comme une Liste à moi...
  • Vous pouvez modifier l'implémentation sous-jacente, de Collection Générique est juste un wrapper.