В чем разница между ключевым словом yield
в Python и ключевым словом yield
в С#?
Разница между доходностью в Python и доходностью в С#
Ответ 1
С# yield return
эквивалентен Python yield
, а yield break
- это просто return
в Python.
Помимо этих незначительных различий, они имеют в основном одну и ту же цель.
Ответ 2
Это может помочь вам понять: Итераторы в С#, Python и Ruby
Ответ 3
Самое важное отличие заключается в том, что выход python дает вам итератор, как только он полностью повторится.
Но возврат к возврату С# дает вам итератор " factory" , который вы можете передать его и использовать в нескольких местах вашего кода, независимо от того, был ли он "зациклен" один раз перед.
Возьмем этот пример в python:
In [235]: def func1():
.....: for i in xrange(3):
.....: yield i
.....:
In [236]: x1 = func1()
In [237]: for k in x1:
.....: print k
.....:
0
1
2
In [238]: for k in x1:
.....: print k
.....:
In [239]:
И в С#:
class Program
{
static IEnumerable<int> Func1()
{
for (int i = 0; i < 3; i++)
yield return i;
}
static void Main(string[] args)
{
var x1 = Func1();
foreach (int k in x1)
Console.WriteLine(k);
foreach (int k in x1)
Console.WriteLine(k);
}
}
Это дает вам:
0
1
2
0
1
2