Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: blau en 07 de Abril de 2010, 06:47:07 PM

Título: LinQ y expresiones lambda
Publicado por: blau en 07 de Abril de 2010, 06:47:07 PM
¿Por que c# no me permite esto?

 
Código (csharp) [Seleccionar]
List<State> _States = new List<State>();

public T Peek<T>() where T : State
{
      return _States.First(s => (typeof(s) == typeof(T)));
}


Error   1   The type or namespace name 's' could not be found (are you missing a using directive or an assembly reference?)   C:\Documents and Settings\blau\Escritorio\defense\Gameplay\States\StatesManager.cs   65   47   Gameplay

State es una clase base de la que heredan los diversos estados del juego.

Esto si me lo permite:  
Código (csharp) [Seleccionar]
return _States.OfType<T>().First();

Título: Re: LinQ y expresiones lambda
Publicado por: Vicente en 07 de Abril de 2010, 07:04:35 PM
El operador typeof espera el nombre de una clase, no un objeto. Para conseguir el tipo de un objeto se usa GetType() (haz s.GetType en vez de typeof(s) y listo :) ).

Título: Re: LinQ y expresiones lambda
Publicado por: blau en 07 de Abril de 2010, 08:20:35 PM
Uups,  ^_^'

No me habia dado cuenta.

Gracias