В чем разница между AsFoo () и ToFoo () в .NET? - PullRequest
8 голосов
/ 30 января 2011

Например, enumerable.ToList() против list.AsReadOnly().

Я спрашиваю, потому что у меня есть класс, который превращает IEnumerable<T> в IDataReader.Интересно, должен ли метод расширения, который его создает, быть ToDataReader или AsDataReader.

1 Ответ

16 голосов
/ 30 января 2011
Методы

As* возвращают другой интерфейс без итерации источника, в то время как To* перебирает его и создает новый объект.

В вашем случае AsDataReader должен быть правильным выбором, поскольку вы не перебираете источник при создании DataReader, а только когда пользователь вызывает методы для него.

...