В настоящее время я работаю с некоторыми библиотеками, применяя отложенное выполнение через итераторы. В некоторых ситуациях возникает необходимость «вперед» полученный итератор просто. Т.е. мне нужно получить экземпляр IEnumerable
из вызываемого метода и немедленно вернуть его.
Теперь мой вопрос: есть ли существенная разница между простым возвратом полученного IEnumerable
или повторное получение с помощью цикла?
IEnumerable<int> GetByReturn()
{
return GetIterator(); // GetIterator() returns IEnumerable<int>
}
// or:
IEnumerable<int> GetByReYielding()
{
for(var item in GetIterator()) // GetIterator() returns IEnumerable<int>
{
yield return item;
}
}