El siguiente código le da un error de compilación, como era de esperar:¿Por qué el compilador de C# permite un molde explícito entre IEnumerable <T> y TAlmostAnything?
List<Banana> aBunchOfBananas = new List<Banana>();
Banana justOneBanana = (Banana)aBunchOfBananas;
Sin embargo, cuando se utiliza IEnumerable<Banana>
, que sólo obtiene un error de tiempo de ejecución.
IEnumerable<Banana> aBunchOfBananas = new List<Banana>();
Banana justOneBanana = (Banana)aBunchOfBananas;
¿Por qué el compilador de C# lo permite?
una lista de lo que no es una sola cosa. –
No está permitido con tipos de valores, sin embargo. – ken2k
Esto también manzanas (vale) para IList. Eso es lo que hizo que toda la interfaz frente a la clase concreta haga clic para mí en las respuestas a continuación. –
deepee1