任意のコレクション型を返すメソッドが必要です - 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>();