C-SHARP - 4.4 ArrayList

Bonjour a tous et bienvenue dans cette nouvelle video. Dans cette video, nous allons voir une nouvelle notion se nommant ArrayList. Jusqu a maintenant on a vu que pour les tableaux ainsi que les listes lorsqu on les declare on ne pouvait stocker que des elements du m me type qu on avait precise lors de l initialisation. C est-a-dire qu on peut creer une liste de type string et on pourra seulement stocker a l interieur de cette liste des strings et rien d autre. Cependant en C#, il existe les ArrayList, a ressemble fortement aux tableaux et aux listes mais en realite ce sont des listes qui permettent de stocker plusieurs elements de differents types. On va voir tout de suite comment en faire, donc vous tapez ArrayList ensuite vous lui donnez un nom par exemple listes = new ArrayList()parenth ses ; Et vous voyez, il ne reconnait pas, c est souligne en rouge. Vous cliquez ici et vous allez devoir rajouter using system.collection. En effet, cette classe contient des interfaces et des classes notamment la classe ArrayList qu on a besoin Et pour ajouter des elements dans notre ArrayList Soit vous faites avec la methode Add() Comme pour les listes. Soit juste apr s les parenth ses vous mettez des acolades avec vos elements. Je vais utiliser les 2 comme a vous voyez les differentes fa ons de faire . Je fais accolades et la je peux mettre des elements du type que je souhaite. Je vais mettre un nombre, ensuite un booleen je mets true, ensuite un string A la difference de la liste je n ai pas eu besoin de specifier le type que je souhaite stocker dans mon ArrayList. C est ce qu on appelle un objet qui n est strictement type. Contrairement a la liste ou un tableau qui eux, sont strictement type, on leur donne bien un type de reference. Ici comme vous avez pu le voir j ai mis un int un booleen. Je peux vraiment tout mixer a l interieur. Et maintenant si j ai envie d afficher les elements de mon Arraylist, je fais comme pour les listes. Je fais une boucle for int i = 0 i strictement inferieur a liste.Count et i++. Et je vais faire un Console.WriteLine() et a l interieur liste de i. Et je lance le programme, vous voyez les elements de l ArrayList s affiche bien. Mais bon a quoi sert concr tement L ArrayList ? Pour tre sinc re avec vous, c est tr s peu utilise. Simplement je vous le montre car a reste une notion a savoir au cas o ou vous travaillerez dans vos futurs projets et que vous tombiez sur une ArrayList. Mais dans nos prochains cours nous allons tr s peu nous en servir voire jamais Pourquoi ? Car mixer les types, ce n est pas en programmation une bonne pratique. L ArrayList va tre utilise dans des cas tr s particuliers mais de mani re generale eviter de l utiliser parce que mixer les types c est souvent une source de confusions et de bug Difficilement a resoudre soit beaucoup de perte de temps ! Je vais juste approfondir un peu pour que sachiez bien les utiliser. Maintenant imaginons que j ai envie de stocker cet ge dans une variable. Vous allez donc faire int age = liste[0] n est-ce pas ? Cependant vous voyez que c est souligne. Il nous informe qu il est impossible de convertir implicitement le type object en int parce que vu qu on peut stocker n importe quel type, en fait a chaque fois que vous allez acceder a un element vous allez recuperer un element de type object. Et ce type object a peut tre n importe quel type. Vu que nous on sait que le premier element c est un type int, on peut le forcer a se convertir en type int. On a le droit de faire a en C#. Pour faire a, devant liste on va mettre parenth ses et le type Ensuite afficher Mon ge est : + age, et maintenant si je lance le programme. J ai bien : Mon ge est 18. En revanche, je n etais pas oblige de forcer le type ici. En C#, a s appelle faire un cast en gros une conversion. J aurais pu directement mettre le liste de zero dans le Console.WriteLine() ou changer le type en mettant object ou var, il va deduire automatiquement le type object. Mais si par exemple je souhaite modifier l ge et que je fais age = liste de zero + 1. Que va-t-il se passer ? Il me dise ici que c est impossible d appliquer l operateur + a un operande de type object. Sois-je suis oblige ici de changer le type object en type int ou var pour effectuer cette operation. Et vous voyez qu ici on est limite avec le type object, on n a pas acc s a toutes les possibilites des types. Donc la si je veux vraiment faire une modification sur un int je suis oblige de forcer la conversion. Et la vous allez voir que a va marcher. Si je relance le programme. Vous voyez qu on a bien afficher 19. Tout a l heure, je vous ai dit qu il etait dangereux de mixer les types et d utiliser les ArrayList. Bah vous voyez si vous vous trompez dans vos index. Et que finalement au lieu de recuperer un int vous tapez ici 1 au lieu de 0 et donc vous recuperez un booleen. Si je lance le programme, vous voyez que le programme se compile mais il me renvoie une exception parce que c est logique, il n est pas capable de convertir un booleen en int. Donc ce que je disais sur les ArrayList, que tout va bien se passer mais a l execution du programme et bien sans aucun doute, vous allez avoir des bugs parce que peu importe l instruction que vous allez faire, elle ne sera peut- tre pas adaptee aux bons types. Et le programme ne fonctionnera pas. Pour beaucoup de developpeurs, il est preferable de travailler avec des collections avec un typage fort soit qu on precise le type d s le depart comme les tableaux ou les listes ou d autres encore comme les dictionnaires qu on verra dans de prochains cours plut t que l ArrayList. En tout cas c est tout pour cette video. J esp re que cette video vous a plu et que tout a ete clair pour vous. Je vous dis a la prochaine dans une nouvelle video.