2009-01-30 8 views
0

Comme le disent les questions, j'ai toujours cru qu'une liste fortement typée est une meilleure approche que l'utilisation de collections. Cependant, après des discussions avec un collègue aujourd'hui, je voulais avoir une meilleure réponse que "parce que je les aime" Quelqu'un peut-il expliquer a) les principales différences et les avantages/inconvénients de chaque approche.Quels sont les avantages/inconvénients de la liste générique (de type) et des collections

Edit: Tout comme What advantage do you get with a collection over List(Of T) in .NET 2.0+

+0

Est-ce une dupe de http://stackoverflow.com/questions/495591/what-advantage-do-you-get-with-a-collection-over-listof-t-in-net-2-0/ 495626 # 495626 ??? –

+0

Ça me sent comme une dupe. Couvre certainement beaucoup du même territoire. – EBGreen

+0

Je pense que cette question est légèrement plus large - devrait peut-être être autorisé à rester ouvert? –

Répondre

4

collections fortement typées, y compris les listes, en fonction des génériques vous permettent de programmer sans avoir à vérifier les types des objets que vous extrayez former la liste. Cela rend le code plus propre car vous n'avez pas besoin de lancer l'objet pour l'utiliser et vous n'avez pas à vous inquiéter des énumérateurs qui lancent des exceptions de cast en raison de la collection contenant un objet du mauvais type. Certes, vous pouvez en obtenir beaucoup grâce aux tests unitaires, mais l'utilisation de génériques permet au compilateur de faire la vérification au moment de la compilation plutôt que d'avoir à faire la vérification au moment de l'exécution. C'est beaucoup plus efficace. Vous pouvez toujours faire des erreurs en jetant des choses de manière inappropriée pour contourner les erreurs de compilation, mais vous obtenez ce que vous méritez si vous le faites sans contrôles appropriés.

2

J'ajouterais à la réponse de tvanfosson que les collections génériques seront considérablement plus efficaces lorsque vous stockez des types de valeur. Par exemple, une liste occupera moins de mémoire et offrira un accès beaucoup plus rapide qu'une ArrayList dans laquelle vous placez des entiers.

Si vous devez absolument stocker des objets de plusieurs types dans une collection, vous pouvez toujours utiliser List et faire le casting comme suit: vous auriez avec ArrayList.

Je ne peux penser à aucune autre raison que la rétrocompatibilité pour utiliser les collections à l'ancienne (c'est-à-dire non génériques) en faveur des collections génériques.

Questions connexes