2017-09-19 7 views
-1

私は本当にこの1つの答えを知っているように感じる... LOL !!は暗黙のうちにタイプリスト<Foo>をsystem.collections.generic.listに変換することはできません<T>

汎用リストの関数内で型付きリストを返すと、コンパイルエラーが発生するのはなぜですか?

コード例:あなたの方法はあなたのfooのリストを与えるために起こっているので、それは、動作しないでしょう

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

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

    return items; 
} 
+0

する必要があります:=新しいリスト() – rajeemcariazo

+1

VAR項目はFooがでもそれができれば、それは*まだ*ではないでしょうT. – Trioj

+3

@Triojにキャストできることを保証は何もないので作業。 – Servy

答えて

-1

として、あなたはあなたの関数を呼び出す場合。

ジェネリックスなしでこれを行う別の方法は、インターフェイスのリストを返すことです。

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

    return items; 
} 
+2

リストは共分散をサポートしていません。どんなタイプのクラスも。 –

+1

'List 'は不変なので、 'List 'を 'List 'に代入することはできません。 – Lee

+0

すべてのあなたの答えはそれを理解するためのヒントを与えたおかげで.. – user167698

-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>(); 
関連する問題