Я пытаюсь понять использование урожая для перечисления коллекции. Я написал этот базовый код:Почему вы предпочитаете доход от простого возврата?
static void Main(string[] args)
{
Iterate iterate = new Iterate();
foreach (int i in iterate.EnumerateList())
{
Console.Write("{0}", i);
}
Console.ReadLine();
}
class Iterate
{
public IEnumerable<int> EnumerateList()
{
List<int> lstNumbers = new List<int>();
lstNumbers.Add(1);
lstNumbers.Add(2);
lstNumbers.Add(3);
lstNumbers.Add(4);
lstNumbers.Add(5);
foreach (int i in lstNumbers)
{
yield return i;
}
}
}
(1) Что делать, если я просто использовать return i
вместо yield return i
?
(2) В чем преимущества использования урожайности и когда нужно ее использовать?
Отредактировано **
В приведенном выше коде, я думаю, что это накладные расходы, чтобы использовать foreach
два раза. Сначала в main function
, а второй - в методе EnumerateList
.
'return i' приведет к ошибке компилятора; 'i' не' IEnumerable '. http://msdn.microsoft.com/en-us/library/vstudio/dscyy5s0.aspx –
SLaks
На всякий случай я удаляю IEnumerable и просто прохожу через коллекцию вместо использования IEnumerable с Yield. –
RKh
@RKh Тогда он вернет первое целое число и никогда не сможет вернуть кого-либо из других. – Servy