467 votes

ArrayList vs List <> dans C #

Quelle est la différence entre ArrayList et List<> en C #?

Est-ce seulement que List<> a un type alors que ArrayList ne le fait pas?

598voto

Mehrdad Afshari Points 204872

Oui, assez bien. List<T> est une classe générique. Il prend en charge le stockage des valeurs d'un type spécifique sans la conversion en, ou à partir d' object (ce qui aurait encourus boxing/unboxing de surcharge lorsque T est un type de valeur dans l' ArrayList des cas). ArrayList simplement stocke object références. En tant que générique de la collection, il met en œuvre le générique IEnumerable<T> interface et peut être utilisé facilement dans LINQ (sans avoir besoin de Cast ou OfType appel).

ArrayList appartient à l'époque que le C# n'ont pas de génériques. C'est dépréciée en faveur de l' List<T>. Vous ne devriez pas utiliser ArrayList dans le nouveau code que des cibles .NET >= 2.0, sauf si vous avez une interface avec une vieille API qui l'utilise.

114voto

termas Points 249

L'utilisation de "Liste" vous permet d'éviter les erreurs d'envoi . Il est très utile d'éviter une erreur de conversion d' exécution .

Exemple:

Ici (en utilisant ArrayList) vous pouvez compiler ce code mais vous verrez une erreur d'exécution plus tard.

 ArrayList array1 = new ArrayList();
array1.Add(1);
array1.Add("Pony"); //No error at compile process
int total = 0;
foreach (int num in array1)
{
 total += num; //-->Runtime Error
}
 

Si vous utilisez List, vous évitez ces erreurs:

 List<int> list1 = new List<int>();
list1.Add(1);
//list1.Add("Pony"); //<-- Error at compile process
int total = 0;
foreach (int num in list1 )
{
 total += num;
}
 

Référence: MSDN

32voto

Noop Points 93

Pour ajouter les points ci-dessus. À l'aide de ArrayList , en 64 bits système d'exploitation prend 2x plus de mémoire que d'utiliser dans le système d'exploitation 32 bits. Pendant ce temps, la liste générique List<T> va utiliser beaucoup de mémoire faible que l' ArrayList.

par exemple, si nous utilisons un ArrayList de 19 MO en 32 bits, il faudrait 39MB dans le 64-bit. Mais si vous avez une liste générique List<int> de 8 MO en 32 bits, il faudrait seulement 8,1 MO en 64 bits, ce qui est une coqueluche 481% de différence par rapport à la liste de tableaux.

Source: liste de tableaux de vs générique Liste pour les types primitifs et 64 bits

4voto

Law Kant Dayal Points 69

ArrayList est les collections de données de types différents plutôt List <> est les collections de types similaires de ses propres depedencties.

-6voto

Patrick Chung Points 19

Ce n'est pas seulement une différence. Les membres ArrayList peuvent être accédés via l'index comme les tableaux ordinaires et les membres ArrayList peuvent facilement être triés en ordre direct et inverse et deux ArrayList peuvent être facilement fusionnés, ce qui n'est pas le cas avec une simple liste. Voir plus sur

http://www.cirvirlab.com/index.php/c-sharp-code-examples/112-c-sharp-arraylist-example.html

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