.NET Framework Emitir


Ejemplo

Cast es diferente de los otros métodos de Enumerable en que es un método de extensión para IEnumerable , no para IEnumerable<T> . Por lo tanto, se puede utilizar para convertir instancias del primero en instancias del último.

Esto no se compila ya que ArrayList no implementa IEnumerable<T> :

var numbers = new ArrayList() {1,2,3,4,5};
Console.WriteLine(numbers.First());

Esto funciona como se esperaba:

var numbers = new ArrayList() {1,2,3,4,5};
Console.WriteLine(numbers.Cast<int>().First()); //1

Cast no realiza conversiones de conversión. Lo siguiente compila pero lanza la excepción InvalidCastException en tiempo de ejecución:

var numbers = new int[] {1,2,3,4,5};
decimal[] numbersAsDecimal = numbers.Cast<decimal>().ToArray();

La forma correcta de realizar una conversión de conversión a una colección es la siguiente:

var numbers= new int[] {1,2,3,4,5};
decimal[] numbersAsDecimal = numbers.Select(n => (decimal)n).ToArray();