汎用的なIEnumerableを返す 質問する

汎用的なIEnumerableを返す 質問する

任意のコレクション型を返すメソッドが必要です - IEnumerable(?) を実装します - (つまり、List、Stack、Queue など)

List<string>,さらに、任意のコレクション型、任意のデータ型を返す必要があります。したがって、このメソッドでは、だけでStack<int>なく 、List<double>などを返すことができるようにする必要があります。

 public IEnumerable<T> returnSomething() 
    {
        Stack<int> stackOfInts = new Stack<int>();
        List<string> listOfStrings = new List<string>();
        return stackOfInts;
    }

これまで試したのはこれです。ただし、これは機能せず、次のエラーが発生します。

Cannot implicitly convert type 'System.Collections.Generic.Stack<int>' to 'System.Collections.Generic.IEnumerable<T>'. An explicit conversion exists (are you missing a cast?)

IEnumerable<T>ただし、メソッド シグネチャ内の を に置き換えるとIEnumerable<int>、int 型の任意のコレクションを返すことができます。ただし、これは、 を返すことができなくなることを意味しますListOfStrings

これを解決するにはどうすればよいですか?

ベストアンサー1

追加する必要があるジェネリック型パラメータあなたの方法に:

public IEnumerable<T> ReturnSomething<T>() 
{
    Stack<T> stackOfT = new Stack<T>();
    return stackOfT;
}

型パラメータはメソッド名の後に、パラメータの前に表示されます。複数の型パラメータを持つメソッドを持つこともできます。

メソッドを呼び出すときに、タイプを指定できます。

IEnumerable<int> myInts = ReturnSomething<int>();

おすすめ記事