【发布时间】:2013-06-11 16:16:06
【问题描述】:
我有三个继承自同一个接口的类:
Apple:Resource
Banana:Resource
Orange:Resource
我在另一个类中列出了每个类型为 op 的列表:
private List<Apple> apples = new List<Banana>();
private List<Banana> bananas = new List<Empleado>();
private List<Orange> oranges = new List<Orange>();
现在我想要一个可以返回任何这些列表的方法,让我们这样说:
public List<Resource> getListOf(string resource)
{
switch (resource)
{
case "apple":
return apples;
break;
case "bananas":
return bananas;
break;
case "oranges":
return oranges;
break;
default:
Console.WriteLine("wrong fruit");
break;
}
}
这给了我以下错误:
不能隐式转换类型 '
System.Collections.Generic.List<Fruits.Apple>' 到 'System.Collections.Generic.List<Fruits.Resource>'
我认为它会以与我一样的方式工作:
foreach (Resource r in Fruitlist) {
r.Meth();
}
【问题讨论】:
-
您可以使用“私有列表
x = new List ();”为您的成员,然后在您的函数中返回它们。然后在需要它们的真实类型(使用 is 和 as)时对其进行测试和转换。
标签: c# class oop inheritance interface