假设:
public static void DoStuff<T>(ICollection<T> source)
{
Customer c = new Customer();
....
source.Add(c);
}
除非 c
的类型是 <T>
,否则无法执行操作。
那么我该如何向泛型集合中添加元素呢?
我尝试使用以下代码:
public static void DoStuff(ICollection<Human> source)
{
Customer c = new Customer();
....
source.Add(c);
}
但我不使用它,因为没有人可以调用DoStuff
:
ICollection<Customer> c;
DoStuff(c); <---error
因为涉及到协变性的问题,.NET框架无法识别Customer
类是由Human
类派生而来的。
class Customer : Human {}
source
中包含的元素,还是只想填充集合?是否可能只返回一个新创建的集合? - Clockwork-Muse