无法将类型List <foo>隐式转换为system.collections.generic.list <t>

时间:2017-09-19 18:36:38

标签: c# .net generics collections

我觉得我应该真的知道这个的答案......哈哈!

为什么在泛型列表的函数中返回类型列表会引发编译错误?

示例代码:

mean

2 个答案:

答案 0 :(得分:-1)

如果您将您的功能称为:

List<Bar> items = Method<Bar>();

它不起作用,因为你的方法会给你一个foo列表。

没有泛型的另一种方法是返回接口列表。

public List<iFoo> Method()
{
   var items = new List<Foo>();

   return items;
}

答案 1 :(得分:-1)

public interface IFoo
{
    int getAll();
}
public class Foo : IFoo
{
    public Foo()
    {
    }
    public int getAll() => 1;
}

public List<T> Method<T>() where T : IFoo, new()
{
   var items = new List<T>();

   var foo = new T();
   items.Add(foo);
   return items;
}
var list = Method<Foo>();