【发布时间】:2011-12-08 07:00:31
【问题描述】:
我知道 C# 没有泛型通配符,通过泛型方法也可以达到类似的效果,但是我需要在字段中使用通配符,如果有什么办法可以解决编码。
List<State<Thing>> list;
void AddToList<T>() where T : Thing {
list.Add(new State<T>());
}
当然,这不起作用,因为要添加的对象不是State<Thing> 类型,而是State<T> where T : Thing 类型。是否可以将列表的最内部类型调整为与 ? extends Thing 等效的 Java,而不仅仅是 Thing?
【问题讨论】:
-
你能把你的名单声明为
List<State<T>> where T : Thing吗? -
@abatishchev:也许把它作为答案发布?
-
@konrad: Done
标签: c# .net generics covariance generic-constraints