Tag: yield

LINQ之外的产量是否有用?

当我认为我可以使用yield关键字时,我退后一步,看看它将如何影响我的项目。 我总是最终返回一个集合而不是yeilding,因为我觉得保持yeilding方法状态的开销不会给我带来太大的影响。 在几乎所有我返回集合的情况下,我觉得90%的时间,调用方法将迭代集合中的所有元素,或者将在整个集合中寻找一系列元素。 我确实理解它在linq中的用处,但我觉得只有linq团队正在编写这样复杂的可查询对象,这些对象的产生是有用的。 有没有人写过像linq这样的产品有用吗?

具有“产量”的function如何正常工作?

我得到了这个方法(在Unity C#Script中),但我不明白“yield”部分是如何工作的。 我从MSDN中知道该函数将返回一个我可以迭代的IEnumerator,但是这段代码等待1.5秒并且没有迭代,因为这意味着,内部创建的对象被多次创建。 这里的任何人都可以解释一下这段代码的工作原理 IEnumerator DestroyShip() { // create new gameobject Instantiate(ExplosionPrefab, transform.position, transform.rotation); // make current gameobject invisible gameObject.renderer.enabled = false; // set new position for the current gameobject transform.position = new Vector3(0f, transform.position.y, transform.position.z); // wait for 1,5 seconds yield return new WaitForSeconds(1.5f); // make the current gameobject visible again gameObject.renderer.enabled = true; […]

将yield转换为VB.NET

首先,我必须假设我不熟悉C#yield关键字及其function。 将它“翻译”成VB.NET的最佳/最简单方法是什么? 特别是我试图将此代码转换为VB.NET,但我失败了: yield return new MatchNode(++index, current.Value); 我拥有的是: Imports System.Collections Imports System.Data.SqlTypes Imports System.Diagnostics.CodeAnalysis Imports System.Text.RegularExpressions Imports Microsoft.SqlServer.Server Class MatchNode Private _index As Integer Private _value As String Public Sub New(ByVal index As Integer, ByVal value As String) _index = index _value = value End Sub Public ReadOnly Property Index() As Integer Get Return […]

Scala是否与C#yield相当?

我是Scala的新手,据我所知,Scala中的收益与C#中的收益不同,它更像是选择。 Scala有类似于C#的收益吗? C#的收益很好,因为它使编写迭代器变得非常容易。 更新:这是来自C#的伪代码示例,我希望能够在Scala中实现: public class Graph { public IEnumerable BreadthFirstIterator() { List currentLevel = new List(); currentLevel.add(_root); while ( currentLevel.count > 0 ) { List nextLevel = new List(); foreach( var node in currentLevel ) { yield return node; nextLevel.addRange( node.Children ); } currentLevel = nextLevel; } } } 此代码实现了图的迭代广度优先遍历,使用yield,它返回一个迭代器,以便调用者可以使用常规for循环遍历图,例如: graph.BreadthFirstIterator().foreach( n => Console.WriteLine( […]

使用“yield”关键字实现状态机

使用yield关键字来实现这里所示的简单状态机是否可行。 对我来说,看起来C#编译器已经为你完成了艰苦的工作,因为它在内部实现了一个状态机来使yield语句工作。 你可以在编译器已经在做的工作之上捎带并让它为你实现大部分状态机吗? 有没有人这样做,技术上是否可行?