Kiedy mam IEnumerable<SomeClass>
, z którego nie wiem, czy jest to lista, czy nie (pod względem List<T>
), i muszę wymienić tę IEnumerable
, aby upewnić się, że nie wyliczyłem tego wyliczalnego dwukrotnie (na przykład pętli nad nim dwa razy lub coś w tym stylu).Czy rzutowanie na IList, a następnie wywołanie ToList(), gdy null jest lepszy niż zwykły ToList()?
Resharper ostrzega mnie o możliwości wielokrotnego wyliczenie IEnumerable - co jest dobre, czasami można go zapomnieć - i pozwala na wybrał quickfixes:
- wyliczyć na tablicy
- Wyliczanie do listy
Po wybraniu opcji Wyliczyć do listy, resharper wprowadza zmienną lokalną i przypisuje wartość IEnumerable w następujący sposób (przykład):
var enumeratedItems = items as IList<SomeClass> ?? items.ToList();
Teraz moje pytanie brzmi:
Dlaczego po prostu nie robi się items.ToList();
?
Co jest zaletą próbuje rzucić do IList<SomeClass>
pierwszy?
Och, widzę, ma sens! Dziękuję Ci :) – Mafii