The problem is that it will allow you to put inappropriate items in the collection.
Here's a simplified recycling that hopefully makes the task easier:
Suppose you have (pseudocode):
class Animal {...} class Dog: Animal { Bark(){} } class Cat: Animal { Meow(){} }
Now imagine that you could do this:
var dogs = new List<Dog>(); dogs.Add(new Dog()); dogs[0].Bark(); var animals = (List<Animal>) dogs;
Then you can do it:
animals.Add(new Animal());
source share