Estoy jugando con genéricos e IEnumerable abit, pero estoy un poco atrapado. Esto es lo que estoy tratando de hacer: - (?) Quiero tener un método que devuelve cualquier tipo de colección que implementa IEnumerable - (así por ejemplo: Lista, pila, cola, ...)devolviendo un genérico IEnumerable <T>
además, Quiero poder devolver cualquier tipo de colección, de cualquier tipo de datos. así que quiero este método sea capaz de devolver un List<string>,
así como un Stack<int>
, así como un List<double>
... etc etc.
public IEnumerable<T> returnSomething()
{
Stack<int> stackOfInts = new Stack<int>();
List<string> listOfStrings = new List<string>();
return stackOfInts;
}
esto es lo que he probado hasta ahora. Sin embargo, esto no funciona, me sale este 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?)
sin embargo, si se sustituye la IEnumerable<T>
en la firma del método a IEnumerable<int>
, puedo devolver cualquier colección de tipo int. Sin embargo, esto significa que ahora ya no puedo devolver el ListOfStrings
.
agradecería cualquier sugerencia o idea :)
gracias, esto funciona de hecho, pero ahora parece que no puede añadir cualquier cosa para la pila ... stackeffects.Push (3); si intento esto, dice: "la mejor coincidencia sobrecargada ... tiene algunos argumentos inválidos". ¿algunas ideas? – Thousand
@JaneDoe: solo puede agregar 'T's a' Stack '. 3 no es necesariamente una 'T'. A menos que agregue una [restricción de tipo genérico] (http://msdn.microsoft.com/en-us/library/d5x73970.aspx) no tiene idea de qué es una 'T', por lo que ni siquiera puede construir una - para hacer eso, necesitarías una restricción 'new()'. ¿Qué estás tratando de hacer, y por qué lo necesitas? –
No necesito esto para nada en particular, estoy probando un montón de cosas. Pero lo entiendo ahora, gracias. – Thousand