I have a class Animal
, and its subclass Dog
.
I have a List
and I want to add the contents of some List
You don't need the cast if you're using C#4:
List animals = new List();
List dogs = new List();
animals.AddRange(dogs);
That's allowed, because AddRange()
accepts an IEnumerable
, which is covariant.
If you don't have C#4, though, then you would have to iterate the List
and cast each item, since covariance was only added then. You can accomplish this via the .Cast
extension method:
animals.AddRange(dogs.Cast());
If you don't even have C#3.5, then you'll have to do the casting manually.