1
例如,如何存儲所有使用派生自相同基類的類型的DataContainers的列表。存儲派生對象的泛型類的列表
public class Animal {}
public class Cat : Animal {}
public class Dog : Animal {}
public class DataContainer <TData> where TData : Animal {
TData innerObject = new TData();
public TData GetData() {
return innerObject;
}
}
public class DataManager {
static void Main() {
DataContainer<Cat> CatData = new DataContainer<Cat>();
DataContainer<Dog> DogData = new DataContainer<Dog>();
var AnimalData = new List<DataContainer<Animal>>();
AnimalData.Add (CatData);
AnimalData.Add (DogData);
for (int i = 0; i < AnimalData.Count; i++) {
Animal animal = AnimalData[i].GetData();
}
}
}
如果對於一個泛型類來說是不可能的,那麼數組是否可能呢?
編輯:收到此錯誤:ArrayTypeMismatchException: Source array type cannot be assigned to destination array type.
這導致ArrayTypeMismatchException:在Unity 5.2
完美的作品!謝謝! – user196399
該鑄造工程,但有什麼辦法可以添加covariant對象到集合? – user196399
@ user196399不確定你的意思(在我的例子中沒有強制轉換)也許提供一個代碼示例,或者提出一個新問題並給我一個鏈接? – BradleyDotNET