class Base
{}
class Sub : Base
{}
void AddNewBase(Base t, LinkedList<Base> list){ ... }
...
{
Sub asub = new Sub();
LinkedList<Sub> asubList = new LinkedList<Sub>();
AddNewBase(asub,asubList) // doesn't work
}
基本上C#多态性,我有一个自定义插入函数,它接受一个新的项目和一个列表把它放在,并做了一些“排序”的东西找到一个好地方,把它放在名单。在泛型类型
问题是,我想根据'Base'中的属性来做到这一点,所以最好只有一个函数可以为所有子类型列表执行此操作。
我想我有点想的是:
static void AddNewBase<T>(T t, LinkedList<T> list){ ... }
但澄清t等的一些方式:“其中T是一个子类基地”
C#中没有模板。 – dtb 2010-11-11 13:33:48
哪个版本? C#4和.NET 4有办法做到这一点。以前的版本没有。 – 2010-11-11 13:34:09
在这种情况下,.NET 4.0并没有什么帮助,因为'LinkedList'既不是协变也不是逆变。通常,您需要泛型类型为“只读”(例如'IEnumerable ')或“只写”(例如'Action ')以允许协变或逆变。 –
stevemegson
2010-11-11 13:45:25