web-dev-qa-db-fra.com

ArrayList vs liste <objet>

J'ai vu cette réponse de Jon sur initialiser l'objet générique avec type inconn :

Si vous souhaitez qu'une seule collection contienne plusieurs types de valeurs non liées, vous devrez utiliser List<object>

Je ne comparais pas ArrayList vs List<>, mais ArrayList vs List<object>, comme les deux exposeront des éléments de type object. Quel serait l'avantage d'utiliser l'un ou l'autre dans ce cas?

EDIT: Ce n'est pas une préoccupation pour la sécurité de type ici, car les deux classes exposent object comme article. Il faut encore appartenir de object au type souhaité. Je suis plus intéressé par quelque chose d'autre que la sécurité de type.

EDIT: Merci Marc Gravell et Sean pour la réponse. Désolé, je ne peux que choisir 1 comme réponse, alors je vais vérifier les deux.

46
faulty

Un grand avantage à utiliser List<object> Est-ce que ces jours-ci, la plupart des codes sont écrits pour utiliser les classes/interfaces génériques. Je soupçonne que ces jours-ci, la plupart des gens écrivaient une méthode qui prend un IList<object> au lieu d'un IList. Depuis ArrayList ne met pas en œuvre IList<object> Vous ne seriez pas en mesure d'utiliser une liste de matrices dans ces scénarios.

J'ai tendance à penser aux classes/interfaces non génériques comme code hérité et évitez-les chaque fois que possible.

41
Sean

Dans ce cas, ArrayList vs. List<Object> alors vous ne remarquerez aucune différence de vitesse. Il pourrait y avoir des différences dans les méthodes réelles disponibles sur chacun de ces éléments, en particulier dans .NET 3.5 et à compter des méthodes d'extension, mais qui en a davantage à faire avec une arrayliste étant quelque peu obsolète que toute autre chose.

11

Oui, en plus d'être Typeafe, des collections génériques peuvent être plus rapides.

De la MSDN ( http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx )

Le System.Collections.Generic Espace de noms contient des interfaces et des classes qui définissent des collections génériques, ce qui permet aux utilisateurs de créer des collections fortement typées offrant une meilleure sécurité et une meilleure performance que collections sans génériques fortement typées.

5
Tamas Czinege

Faites de l'analyse comparative et vous saurez ce qui fonctionne le mieux. Je visidime que la différence est très petite.

1
tuinstoel