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?
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?
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.
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
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
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 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.