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