【发布时间】:2017-07-27 11:31:35
【问题描述】:
我有这样的设置:
abstract class Foo {}
class Bar : Foo {}
以及这种形式的其他方法:
void AddEntries(List<Foo>) {}
我正在尝试使用 Bar 类型的对象列表调用此方法
List<Bar> barList = new List<Bar>()
AddEntries(barList);
但这给了我错误:
无法从 List
转换为 List
有没有解决这个问题?我需要使用抽象类保留方法定义。
【问题讨论】:
-
C# 是否像 Java 一样具有
List<? extends Foo>的语法? -
@dbush 是的,C# 的版本在接受的答案中
-
@harrichael 虽然与 Java 不同,C# 支持泛型协变,因此有更好的选择(参见 Rob 的回答)
-
我实际上怀疑 Rob 的答案更好,因为我打赌 OP 是将传递的条目添加到聚合列表中,而不是改变参数。
标签: c# .net generics inheritance