是否有人知道是否可以将具有特定类型参数(例如Bar)的泛型类型转换为相同的泛型类型,其中type参数是Bar的基本类型(例如我的对象中的对象)。并且,如果有可能,它将如何完成?
我想要做的是拥有Foo<object>
的集合,但能够添加具有更多特定类型参数的Foos。
谢谢
答案 0 :(得分:3)
您可以拥有一个添加了子类的基类型的集合。例如,以下内容将起作用:
// Using:
public class Foo {} // Base class
public class Bar : Foo {} // Subclass
// Code:
List<Foo> list = new List<Foo>();
HashSet<Foo> hash = new HashSet<Foo>();
list.Add(new Bar());
list.Add(new Foo());
hash.Add(new Bar());
由于“Bar”是特定类型的“Foo”,将它添加到Foo的集合中是完全合法的。
但是,在.NET 4和协变度out modifier之前,你不能这样做:
IEnumerable<Foo> list = new List<Bar>(); // This isn't supported in .NET 3.5...
答案 1 :(得分:2)
使用List(T)或Array的ConvertAll方法。
答案 2 :(得分:2)
是的,可以在C#4.0中使用!
您应该查看covariance。
答案 3 :(得分:0)