我正在将C#代码转换为Delphi 2010.我坚持在delphi中找到相当于C#的yield return。 有人可以帮忙吗?
答案 0 :(得分:3)
根本没有相应的东西。 Delphi没有任何匹配功能。在C#中yield return
用于C#迭代器方法,而Delphi没有像C#迭代器方法那样远程。
在Delphi中,您需要手动编写迭代器,而不需要迭代器方法的语法糖。这在documentation。
中有所描述答案 1 :(得分:2)
在delphi中至少有两个Yield实现(但两者都不理想)。
首先使用asm magic,在这里:http://santonov.blogspot.ru/2007/10/yield-you.html
其次是使用Win32光纤(非常轻量级的线程),因此仅适用于Windows。它在这里:http://www.gerixsoft.com/blog/delphi/yield
还有一个基于光纤的可执行性稍差一点的实现:http://delphisorcery.blogspot.ru/2011/04/yield-return-and-delphi.html
那就是说,如果你是Delphi的新手,我不推荐使用yield,因为它不是Delphi中常见的编程方式。因此,只有了解后果才能使用它。
答案 2 :(得分:1)
Delphi https://github.com/Purik/AIO
有基于协程的框架你可以在这里看到生成器的例子(比如Python) - https://github.com/Purik/AIO/blob/master/Demos/Tutorial/Generator.dpr