Это было покрыто до тошноты во многих других ответах. Краткий ответ таков:
Считайте, что у меня есть эти переменные:
List<Customer> customers = new List<Customer>(); //ok, seems fair
List<object> objects = new List<object>(); // again, everything's fine
Теперь вот где он перестает компилироваться:
objects = customers; // sounds OK, since a Customer is an object, right?
objects.Add("foo");
Имеет ли это смысл сейчас?
C # 4.0 предоставит ограниченную способность делать то, что вы пытаетесь, хотя возможность делать точно , как вы описываете (присвоение List<Customer>
для List<object>
не будет разрешено для Те же рассуждения я изложил выше). См. блог Эрика Липперта для получения дополнительной информации и исправления к некоторой дезинформации, которая происходит вокруг паутины.
Чтобы ответить на ваш комментарий выше, нет причины, по которой вы не можете выполнять те же операции отражения для экземпляра Customer
, что и для object
.