我有2个类(MyClass1和MyClass2),它们都从MyBaseClass继承。
我想编写一个将其中任何一个的列表作为参数的函数,像这样
private void DoStuff(List<MyBaseClass> input)
{
...
}
如何将列表传递给此功能?
最佳答案
您不能那样做,因为List<MyClass1>
不是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)
关于c# - 继承的类作为函数参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6774582/