Metoda
Cast<T>()
służy do konwersji obiektu typu
IEnumerable<A>
na
IEnumerable<T>
. Przykład zastosowania:
int[] x11 = new int[] { 1, 2, 3, 4, 4, 3 };
object[] x21 = x11.Cast<object>().ToArray();
int[] x31 = x21.Cast<int>().ToArray();
Cast<T>()
zwraca jako wynik obiekt typu
IEnumerable<T>
, stąd w powyższym przykładzie potrzebne jest jeszcze wywołanie
ToArray()
. Ale takie coś nie zadziała:
int[] x11 = new int[] { 1, 2, 3, 4, 4, 3 };
uint[] x21 = x11.Cast<uint>().ToArray();
int[] x31 = x21.Cast<int>().ToArray();
Problem polega na tym, że
Cast<T>()
wykonuje konwersje tylko jeśli wszystkie obiekty kolekcji źródłowej są także obiektami typu
T
. Jeśli warunek nie jest spełniony dostaniemy wyjątek. Nie nastąpi to w samej metodzie
Cast<T>()
, dopiero próba enumeracji po zwróconym enumeratorze zakończy się wyjątkiem (efekt
opóźnionego wykonywania kodu).
Cast<T>()
nie uwzględnia także bezpośrednich operatorów konwersji.
Brak komentarzy:
Prześlij komentarz