45 votes

Impossible de convertir implicitement List<T> en Collection<T>

Il s'agit d'une erreur de compilation (légèrement modifiée pour des raisons de lisibilité).

Celle-ci m'a toujours laissé perplexe. FxCop indique que c'est une mauvaise chose à renvoyer List<T> et les classes dérivées de Collection<T> devraient être préférés comme types de retour.

Par ailleurs, FxCop indique qu'il est possible d'utiliser List<T> pour le stockage/la manipulation de données internes. Ok, j'ai compris, mais ce que je ne comprends pas, c'est pourquoi le compilateur se plaint d'essayer de convertir implicitement List<T> a Collection<T> . N'est-ce pas List<T> plus chargée d'interfaces et plus fonctionnelle ? Pourquoi interdire la conversion implicite ?

Et une autre question qui découle de ce qui précède : est-ce que le new List<int>(some collection<int>) Le constructeur est-il coûteux ?

0voto

Vous pouvez utiliser le formulaire ci-dessous

public class EmployeeCollection : Collection<Employee>
{
      public EmployeeCollection(IList<Employee> list) : base(list)
      {}

      public EmployeeCollection() : base()
      {}

}

Utilisez la classe comme suit

EmployeeCollection  employeeCollection = new EmployeeCollection(list)

-2voto

Alexis Gassan Points 1

Dans l'autre sens, il n'est pas nécessaire de faire une boucle... vous pouvez faire juste .ToList()

    ICollection<T> collection = new Collection<T>();

remplissez votre collection à l'aide de n'importe quelle méthode, et lorsque vous avez besoin de la liste, faites simplement ceci :

    List<T> list = collection.ToList();

Ensuite, vous pouvez utiliser votre liste comme bon vous semble.

Bon codage !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X