La raison en est qu'une classe générique comme List<>
est, dans la plupart des cas, traitée en externe comme une classe normale. par exemple. quand vous dites List<string>()
le compilateur dit ListString()
(qui contient des chaînes). [Technical folks : ceci est une version extrêmement simplifiée en anglais de ce qui se passe]
Par conséquent, il est évident que le compilateur ne peut pas être assez intelligent pour convertir un ListString en un ListObject en transtypant les éléments de sa collection interne.
C'est pourquoi il existe des méthodes d'extension pour IEnumerable comme Convert() qui vous permettent de fournir facilement une conversion pour les éléments stockés dans une collection, ce qui peut être aussi simple que de passer de l'un à l'autre.