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.
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.
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.
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.
Faites de l'analyse comparative et vous saurez ce qui fonctionne le mieux. Je visidime que la différence est très petite.