IEnumerable<Book> _Book_IE
List<Book> _Book_List
Nasıl dönüştürmek amacıyla yapayım _Book_List
içine IEnumerable
formatında?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Nasıl dönüştürmek amacıyla yapayım _Book_List
içine IEnumerable
formatında?
Yanıtlar:
Dönüştürmenize gerek yok. arabirimi zaten numaralandırılabilir olması için List<T>
uygular IEnumerable<T>
.
Bu, aşağıdakilere sahip olmanın tamamen iyi olduğu anlamına gelir:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
Hem de:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
hangisi çağrılabilir:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Assembly System.Core ve System.Linq ad alanında AsEnumerable uzantı yöntemini kullanabilirsiniz:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Bu, bu MSDN bağlantısında belirtildiği gibi , derleme sırasında Listenin türünü değiştirecektir. Bu size, sadece ihtiyaç duyduğumuz koleksiyonunuzu numaralandırma avantajlarını da sağlayacaktır (bunun için MSDN örneğine bakın).
Neden Tek astar kullanmıyorsunuz ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Bildiğim kadarıyla List<T>
uygular IEnumerable<T>
. Bu, herhangi bir şeyi dönüştürmek veya döküm yapmak zorunda olmadığınız anlamına gelir.
IEnumerable<IList<obj>>
bir karşı IEnumerable<IEnumerable<obj>>
ikinci ilki devralan olmadığından bu bir derleyici hata veriyor.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Genel varyant ise:
_Book_IE = _Book_List;
Jenerik olmayana dönüştürmek istiyorsanız:
IEnumerable ie = (IEnumerable)_Book_List;