0
我將與代碼開始泛型集合不工作
class LocData
{
public virtual TypeA Copy() { ... }
...
}
class LocDataCollection<T> : List<T> where T: LocData
{
public LocDataCollection<T> Copy()
{
LocDataCollection<T> locDatas = new LocDataCollection<T>();
foreach (T locData in this)
{
T locData2 = locData.Copy() as T;
locDatas.Add(locData2);
}
return locDatas;
}
...
}
和
class TypeA : LocData
{
public new TypeA Copy() { ... }
...
}
class TypeACollection : LocDataCollection<TypeA>
{
}
測試代碼:
TypeACollection typeAs = new TypeACollection();
...
TypeACollection typeAs2 = typeAs.Copy();
編譯消息:
「無法隱式轉換類型' LocDataCollection'改爲'TypeAColl撓度」。一個顯式轉換存在(是否缺少強制轉換?)」
我得改
TypeACollection typeAs2 = typeAs.Copy() as TypeACollection;
編譯通過,但在運行時的錯誤了。typeAs2返回爲空甚至typeAs不爲null。
在TypeACollection中你有具體的行爲,值得創建一個新的類,而不是僅僅使用LocDataCollection? –
Mike
2012-04-20 20:39:09
是的,TypeACollection中還有其他函數。 – weslleywang 2012-04-20 23:18:20