我有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/

10-09 00:09