我有两个类(MyClass1和MyClass2)都继承自MyBaseClass。
我想编写一个函数,将其中任何一个列表作为参数,如此
private void DoStuff(List<MyBaseClass> input)
{
...
}
如何将List传递给此函数?
答案 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)