Bonjour,
Je voulais savoir, c'est quoi la différence entre un List<?> et un List<T>?
Merci!
Bonjour,
Je voulais savoir, c'est quoi la différence entre un List<?> et un List<T>?
Merci!
C'est facile :
List<?> accepte n'importe quoi alors que List<T> n'accepte que les objets du type T.
Conséquence :
- avec ? tu ne pourras faire que des lectures dans ton objet. Toute écriture génèrera une erreur à la compilation.
- avec T tu as l'avantage de pouvoir donner des précisions sur ton type car si tu fais :
Tu indiques que les types des deux listes sont les mêmes. Précision que tu ne peux pas donner avec ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List<T> liste1; List<T> liste2;
Voilà en gros.
Il y a d'autres subtilités mais tu les trouveras dans des tutos sur le net.
Je préfère dire que List<?> est une List dont on ne sait pas ce qu'elle contient, alors que List<T> est une List qui contient des T.
Ce qui du, coup explique les conséquences :
- On ne peut obtenir que des Object d'une List<?> parce qu'on ne sait pas ce qu'on a le droit de mettre dedans.
- On ne peut rien mettre dans une List<?> parce qu'on ne sait pas ce qui peut être mis dedans.
- On peut obtenir des T et mettre des T dans une List<T>, parce qu'on sait que ce qu'elle contient, c'est des T.
Oui, c'est une bien meilleure façon de présenter les choses.
Partager