问题标签 [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 投票
3 回答
1272 浏览

c# - IEnumerator 用途

我不太明白 C# Collections 中 IEnumerator 的用途是什么。它的用途是什么,为什么要使用它?

我尝试在线查看http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx 但那篇文章没有多大意义。我问的原因是在 Unity3d 游戏引擎中,它与 yield 函数一起使用。我试图弄清使用 IEnumerator 的原因。

0 投票
2 回答
1319 浏览

c# - 实现 IEnumerator 的动态生成的类GetEnumerator() 和 IEnumerator IEnumerable.GetEnumerator()

我对 Reflection.Emit 有疑问。我想要动态创建的类,它具有 ICollection 的简单实现。我定义的所有方法都很好,而不是接下来的两个: public IEnumerator GetEnumerator() & IEnumerator IEnumerable.GetEnumerator() 下一个代码显示了我想要在我的动态类中的内容:

这是反射器的输出,打开了我的动态程序集:

我正在以这种方式定义我的班级:

当我调用 myType.CreateType TypeLoadException 时抛出消息 GetEnumerator 方法没有实现。我建议使用 IEnumerable.GetEnumerator 方法的问题,因为我在 C# 上编写它时遇到了问题,甚至在 IL 中也没有:)。谁能帮我?

0 投票
2 回答
4654 浏览

c# - 如果 IEnumerator 抛出异常.MoveNext() 或 .Current,是否仍需处理?

直觉上我认为是的,但我不确定是否有一些我不知道的约定。

0 投票
1 回答
261 浏览

vb.net - J# 集合到 VB .NET 集合

我有一系列返回 J# 数据类型的 API 调用。我已经能够很好地转换大多数数据类型(Integer、Boolean、Double、Float 等)。

我现在需要做的是将 java.Util.Collection 转换为 VB .NET 集合(ArrayList?)

这是我的尝试:

我不断收到运行时错误“无法将'AbstractListlistIterator'类型的对象转换为'System.Collections.IEnumerator'。有什么想法吗?

0 投票
7 回答
890 浏览

c# - 关于 IEnumerable 和 IEnumerator 的问题

我使用以下代码使 myClass 能够使用 foreach。但是我对编程比较陌生,并且在理解以下代码方面有些困难。我在评论中描述了我的问题。我将不胜感激提供一些信息。

0 投票
4 回答
1120 浏览

.net - 为什么在 using 语句的闭包内捕获可变结构变量会改变其本地行为?

更新:好吧,现在我已经完成了:我向微软提交了一份错误报告,因为我严重怀疑这是正确的行为。也就是说,对于这个问题,我仍然不能 100% 确定该相信什么;所以我可以看到“正确”的内容可以进行某种程度的解释。

我的感觉是微软要么接受这是一个错误,要么回应在using语句中修改可变值类型变量构成未定义的行为。

此外,对于它的价值,我至少对这里发生的事情有一个猜测。我怀疑编译器正在为闭包生成一个类,将局部变量“提升”到该类的实例字段;并且由于它在一个using街区内,因此它正在制作该字段readonly正如 LukeH 在对另一个问题的评论中指出的那样,这将阻止方法调用,例如MoveNext修改字段本身(它们反而会影响副本)。


注意:为了便于阅读,我已经缩短了这个问题,尽管它仍然不是很短。有关完整的原始(较长)问题,请参阅编辑历史记录。

我已经通读了我认为是 ECMA-334 的相关部分,似乎无法找到这个问题的决定性答案。我将首先陈述问题,然后为感兴趣的人提供一些附加评论的链接。

问题

如果我有一个实现的可变值类型IDisposable,我可以(1)调用一个方法来修改using语句中局部变量的值的状态,并且代码的行为符合我的预期。然而,一旦我在语句的闭包捕获了有问题的变量using,(2) 对值的修改在本地范围内不再可见。

这种行为仅在变量被捕获在闭包内和using语句内的情况下才明显;仅存在一个 ( using) 或另一个条件 (闭包) 时并不明显。

为什么在语句的闭包内捕获可变值类型的变量会using改变其本地行为?

下面是说明第 1 项和第 2 项的代码示例。两个示例都将使用以下演示Mutable值类型:

1. 在using块中改变值类型变量

输出代码输出:

using2. 在块内的闭包内捕获值类型变量

上面的代码输出:

进一步的评论

已经注意到 Mono 编译器提供了我期望的行为(局部变量值的更改在using+ 闭包情况下仍然可见)。我不清楚这种行为是否正确。

有关我对这个问题的更多想法,请参见此处

0 投票
1 回答
147 浏览

.net - 重用 IEnumerable导致错误结果,例如在 .Any()

我有点迷失在延期执行的土地上:

我声明了一个 IEnumerable 实现类的实例

然后我迭代它(第一个词是“Lorem”)

.. 写入控制台。

现在在代码中我做了一个

.. 并得到一个 False 作为输出。

现在,如果我将 .Any(..) 部分放在 foreach 循环上方,我确实得到了一个正确的结果,但是循环确实从第二个单词开始。

我的期望是 .Net 为每次调用 IEnumerable 及其底层 IEnumerator 创建不同的运行时“上下文”,因此它们不会干扰......我不想手动 .Reset() 以获得正确的结果?

我在这里想念什么?

更新

.. 它基本上是一个 IEnumerable,它允许我遍历给定字符串中的单词。

0 投票
1 回答
11105 浏览

c++-cli - C++/CLI IEnumerable 和 IEnumerator 实现

有没有人有一个关于如何在 C++/CLI 中实现 IEnumerable 和 IEnumerator 的工作的分步示例?或者,有人知道如何修复 MS Connect 中无法在 Visual Studio 2005 中编译的以下代码吗?

http://connect.microsoft.com/VisualStudio/feedback/details/101089/how-to-implement-ienumerable-t-and-ienumerable-c-cli

编译器找不到枚举器方法实现:

0 投票
3 回答
2501 浏览

c# - 为什么在实现 IEnumerator 的类中需要 IEnumerator.Current?

我有一个实现IEnumerator<string>. 见下文:

IEnumerator<T>除了接口和IEnumerator接口(继承)上都存在 .Current 属性这一事实之外IEnumerator<T>,实现它的意义何在?如上所示,它甚至没有被调用。

0 投票
1 回答
793 浏览

c# - ReSharper:可能带有枚举器的 NullReferenceException?

ReSharper 通知我System.NullReferenceException以下代码的可能:

具体来说,它强调:

我不知道在什么情况下会发生异常。我的理解是,只有在可以在下一个元素上设置枚举器的情况下,while才会执行 -loops 内部语句。MoveNext()