问题标签 [ienumerator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5317 浏览

c# - Passing a value by ref to an IENumerator function?

To clarify I'm doing this in Unity3D, which may or may not be important?

I'm trying to figure out if I can pass a value by ref to an IEnumerator function that does not yield. If I try to do it with one that yields, VS2010 complains ("Iterators cannot have ref or out parameters"), but, if I wrap the call up with a similar IEnumerator function that calls the yielding function, but does not yield itself, the error goes away and things appear to work. I'm trying to find out if I'm in unexpected behavior land or if this is normal behavior.

Here's an example of what I'm doing:

0 投票
3 回答
3741 浏览

c# - foreach 的 for/while 等价物是什么?

我有一个foreach需要转换为foror循环的while循环。我的循环如下所示:

什么是等价物forwhile循环?

我想我需要使用GetEnumerator来获得一个IEnumerator<Item>,但我不知道如何正确使用它。Items不是列表,否则我会使用索引。

0 投票
2 回答
14971 浏览

c# - foreach 语句不能对 Dars 类型的变量进行操作 不包含“GetEnumerator”的公共定义

我有一个列表 Dars

我创建了一个新的 dars

然后我用这段代码来填充它

现在我想做这样的事情

但我收到了这个错误

foreach 语句不能对“PantaRei.Components.Dars”类型的变量进行操作,因为“PantaRei.Components.Dars”不包含“GetEnumerator”的公共定义

我该如何解决这个问题?

0 投票
2 回答
2165 浏览

c# - 多个线程使用 yield 访问 IEnumerable

我正在使用第三方库来迭代一些非常大的平面文件,这可能需要几分钟。该库提供了一个枚举器,因此您可以在枚举器提取平面文件中的下一项时产生每个结果并对其进行处理。

例如:

我想要实现的是拥有相同 Enumerable 的两个消费者,因此我不必两次提取信息,因此每个消费者仍然可以在每个项目到达时对其进行处理,而不必一直等待到达一次。

我想我想要达到的目标是

“如果消费者要求的项目已经被提取,那么就放弃它,否则移动下一步并等待”,但我意识到两个线程之间可能存在 MoveNext() 冲突。

如果没有任何关于如何实现的想法,这样的事情是否已经存在?

谢谢

0 投票
0 回答
184 浏览

c# - 两种类型的迭代器

我为所有代码道歉,但我很难描述我想要做什么。我正在为瓦片地图创建一个 2D 网格。瓷砖(块)被分解成一个 10x10 的方块,称为一个块,这些块形成 10x10 的方块以形成区域,一个 10x10 的方块形成一个世界。正方形的边尺寸是blockSize。

所有坐标都是[X,Y],0,0是左上角,都是从左到右再从上到下扫描。

从最大到最小:世界 -> 区域 -> 块 -> 块。

这张图片显示了一个 2x2 块大小的世界将如何布局:

在此处输入图像描述

“大”地址显示每个块的地址如果它位于单个巨型阵列中而不是分解为子单元时。

在这篇文章的最后,我给出了我已经工作的代码的悬崖笔记版本。我可以创建所有的结构。我设置了迭代器(参见最后的代码),以便每个级别只能迭代低于它的级别。我的代码可以执行以下操作:

...

我想要的是让我的迭代器能够遍历我的数据的两个级别。例如,给定一个区域,扫描该区域中的所有块,并为我提供整个区域中所有块的列表。或者给定一个世界,得到世界上所有的块。或者是整个世界中所有方块的巨大列表。

...

...

如何编写我的迭代器代码以便生成我想要的列表?这是我第一次用迭代器做任何复杂的事情,我在弄清楚如何去做时遇到了很多麻烦。尝试这种事情是个好主意吗?它是高效/低效的吗?

这是我的代码的精简版本,以显示我的工作:

0 投票
4 回答
94 浏览

.net - IEnumerator 的意义何在?

这是一个很好的视频,解释了它是什么以及它们之间的区别,但它似乎有一个根本性的缺陷,你不能跳过这个列表;它甚至缺少 Previous() 方法。

如果找到匹配项,我将列表发送到函数,而不是原始的 for...next 从下一个索引开始,我只是返回在函数中找到下一个匹配项的行,因为它有已经完成了一个辅助循环来读取每个“Hello”块之间的所有行。

我不能用像 IEnumerator 这样的迭代类来做这些。我错过了什么吗?

0 投票
5 回答
4732 浏览

c# - 为什么我们需要 IEnumerator 和 IEnumerable?

好的,所以我只是在处理IEnumeratorand IEnumerable。现在 MSDN 说这些东西的主要目标是遍历客户集合。

很公平,但是我能够在不使用任何一个的情况下迭代自定义集合(或者至少我想这样认为)

所以我的理解有什么缺陷,上面给我的结果与我在实施IEnumeratorand后获得的结果相同IEnumerable

0 投票
1 回答
291 浏览

c# - 为什么 IEumerator影响 IEnumerable 的状态甚至枚举器也没有到达终点?

我很好奇为什么以下会在“最后”分配中引发错误消息(文本阅读器关闭异常):

但是以下执行正常:

不同行为的原因是什么?

0 投票
1 回答
114 浏览

nsdictionary - 循环遍历 NSDictionary 会导致奇怪的行为

我目前有一个用于存储 json 信息的 NSDictionary,JSON 最初被序列化为 NSMutuable 数组,然后我将其分配给 NSDictionary。

在我的注释方法(我用来将 mkannotations 添加到我的地图视图的方法)中,我试图遍历字典并通过存储为字典中每个对象的键的坐标添加注释。

我目前的结果似乎只创建了一个注释视图(地图上的图钉),通过断点查看它似乎是在遍历字典但没有访问所有对象,我的代码如下:

看起来我正在考虑 for 参数中的键应该引用字典中某个对象中的键,例如@“v_lon”,这看起来正确吗?

谢谢

0 投票
2 回答
4667 浏览

c# - 对我的对象实施 IEnumerable

可能重复:
为 LinkedList 类实现 C# IEnumerable<T>

在网上搜索了几个小时后,我仍然无法理解IEnumerable/如何IEnumerator工作以及如何实现它。

LinkedList从头开始构建了一个简单的,但现在我想实现IEnumerable它,以便我可以实现它。我怎么做?