Looking for .net Keywords? Try Ask4Keywords

.NET Framework В ролях


пример

Cast отличается от других методов Enumerable тем, что это метод расширения для IEnumerable , а не для IEnumerable<T> . Таким образом, его можно использовать для преобразования экземпляров первого в экземпляры позже.

Это не компилируется, поскольку ArrayList не реализует IEnumerable<T> :

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

Это работает так, как ожидалось:

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

Cast не выполняет преобразования. Следующие компиляции, но InvalidCastException во время выполнения:

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

Правильный способ преобразования конвертирования в коллекцию выглядит следующим образом:

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