Python 的产量的 C# 类比
C# analogy for Python's yield from
如果我想将两个生成器合二为一
def gen1():
for i in range(5):
yield i
def gen2():
for i in 'asdf':
yield i
def gen():
yield from gen1()
yield from gen2()
或者做一些递归生成器
def gen(arg):
if arg == 1:
yield from gen(0)
for i in range(10):
yield i
在 Python 我将使用 yield from
。有没有其他方法可以在 C# 中做类似的事情?
不,yield return
.
没有组合两个迭代器的语法糖
如果您只需要按顺序迭代它们,您可以使用 Enumerable.Concat
,或者编写代码来迭代序列和 yield return
每个元素。
如果我想将两个生成器合二为一
def gen1():
for i in range(5):
yield i
def gen2():
for i in 'asdf':
yield i
def gen():
yield from gen1()
yield from gen2()
或者做一些递归生成器
def gen(arg):
if arg == 1:
yield from gen(0)
for i in range(10):
yield i
在 Python 我将使用 yield from
。有没有其他方法可以在 C# 中做类似的事情?
不,yield return
.
如果您只需要按顺序迭代它们,您可以使用 Enumerable.Concat
,或者编写代码来迭代序列和 yield return
每个元素。