I want to have a method that returns any collection type – that implements IEnumerable (?) – (so e.g: List, Stack, Queue, …)
Furthermore it should return any collection type, of any datatype.
so i want this method to be able to return a List<string>, as well as a Stack<int>, as well as a List<double>… etc etc.
public IEnumerable<T> returnSomething()
{
Stack<int> stackOfInts = new Stack<int>();
List<string> listOfStrings = new List<string>();
return stackOfInts;
}
this is what i’ve tried so far. this however doesn’t work, i get this error:
Cannot implicitly convert type 'System.Collections.Generic.Stack<int>' to 'System.Collections.Generic.IEnumerable<T>'. An explicit conversion exists (are you missing a cast?)
however, if i replace the IEnumerable<T> in the method signature to IEnumerable<int> , i can return any collection of type int. This however means, that now i can’t return the ListOfStrings anymore.
How can I resolve this?
You need to add a generic type parameter to your method:
The type parameter appears after the method name, but before the parameters. It is also possible to have a method with more than one type parameter.
When you call the method you can specify the type: