Joh*_*kin 29
C#yield return等同于Python yield,yield break只是return在Python中.
除了那些微小的差异,它们的目的基本相同.
小智 12
最重要的区别是python yield为你提供了一个迭代器,一旦完全迭代就结束了.
但是C#yield return为你提供了一个迭代器" 工厂",你可以传递它并在你的代码的多个地方使用它,而不用考虑它是否曾经"循环"过一次.
以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]:
Run Code Online (Sandbox Code Playgroud)
在C#中:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这给你:
0
1
2
0
1
2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3346 次 |
| 最近记录: |