继承类作为函数参数

时间:2011-07-21 10:24:02

标签: c# generics

我有两个类(MyClass1和MyClass2)都继承自MyBaseClass。

我想编写一个函数,将其中任何一个列表作为参数,如此

private void DoStuff(List<MyBaseClass> input)

{

...

}

如何将List传递给此函数?

1 个答案:

答案 0 :(得分:6)

你不能这样做,因为List<MyClass1> 不是 a List<MyBaseClass>。在Stack Overflow上搜索通用方差,以解释为什么会出现这种情况。

private void DoStuff<T>(List<T> input) where T : MyBaseClass

或者,在C#4和.NET 4中,如果您只需要迭代它,则可以使用IEnumerable<T>中的协变T

private void DoStuff(IEnumerable<MyBaseClass> input)