问题标签 [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.
.net - 你叫什么 IEnumerable?
我有时会发现自己在考虑在提及IEnumerable<Foo>
. 我不认为我在阅读时看到一致的命名。
IEnumerable<Foo>
: 这是一个类型名称。在思考或在句子中使用时没有帮助。
收藏:它是有效的,但不是到处使用。虽然我们有 System.Collections 命名空间。
序列:它也是有效的,并且可能更好地定义它。
Enumerator或Iterator:它们强调操作,很少使用。
什么是最合适的?你在你的代码中读到了什么?
c# - 简单的 IEnumerator 使用(示例)
我很难记住如何(但不知道为什么)IEnumerator
在 C# 中使用 s。我已经习惯了 Java 的精彩文档,它很好地向初学者解释了一切。所以,请多多包涵。
我曾尝试从这些板上的其他答案中学习,但无济于事。与其问一个以前已经问过的通用问题,我有一个具体的例子可以为我澄清事情。
假设我有一个需要传递IEnumerable<String>
对象的方法。该方法所需要做的就是将字母连接到迭代器roxxors
中的每个末尾。String
然后它将返回这个新的迭代器(当然原始IEnumerable
对象保持原样)。
我该怎么办?当然,除了我之外,这里的答案应该可以帮助许多人解决有关这些对象的基本问题。
c# - 使用 IEnumerable 检测修改
我有一个令我惊讶的问题还没有以这种格式被问到。
如果我有一个基于迭代数据源(并使用 yield return 语句)生成的 IEnumerable,我如何检测通过生成的 Enumerator 访问后源何时发生修改GetEnumerator 调用?
这是奇怪的部分:我不是多线程的。我认为我的问题在某个地方存在缺陷,因为这应该很简单。. . 我只想知道源何时更改并且迭代器已过时。
非常感谢。
c# - 在 foreach 循环 C# 中捕获行为
简单的问题,我相信 --> 我的理解是,当我在 IEnumerable 对象上使用 foreach 循环时,正在使用一个虚构的 IEnumerator 对象。我的问题如下:
如何在处理我的对象的 foreach 循环中“捕捉”非法行为?我特别想查看创建 IEnumerable 的原始对象是否已被修改。如果原来的已经被修改了,我想抛出一个异常。
我目前的方法是使用版本号。如果我创建一个显式迭代器并使用 MoveNext() 或类似的方法,这非常有用,但是 foreach 循环似乎欺骗了我的基于版本的方法。
c# - 如何为多个foreach实现正确的IEnumerator接口?
我有一个像这样的代码:
在上面的代码中一切正常,但是当我使用下一个时:
它打印(在括号中的第二个循环中): 0 1 (3 4) 2 而不是 0 1 (0 1 2 3 4) 2 3 4 我在 List 和 Collection 上测试了它,他们做得对。我怎样才能达到我所需要的?
ruby - 如何实现一个基本的 Enumerator 类?
我试图了解 Enumerator 类的工作原理。具体来说,我不知道 yielder 对象是如何创建并传递给构造函数所采用的代码块的。
这是我的第一次尝试:
它不起作用,当然是因为我不知道如何推进枚举器。有人可以帮助我理解如何实现它吗?
c# - C# 类同时是 IEnumerable 和 IEnumerator。这有什么问题?
我有一个名为 GenericPermutations 的类,它既是可枚举的,又是枚举器。它的工作是获取一个有序的对象列表,并按顺序遍历它们的每个排列。
例如,此类的整数实现可以遍历以下内容:
所以它是可枚举的,因为它包含一个你可以枚举的东西的“列表”。它也是一个枚举器,因为它的工作涉及找到下一个排列。
问题:我目前正在尝试将 IEnumerator 和 IEnumerable 与此类集成,在我看来它应该两者兼而有之(而不是使用子类作为 IEnumerable)。到目前为止,我已经避免了尝试通过在方法中传递一个新的 GenericPermutation 对象来从中获取两个枚举数的问题GetEnumerator
。
这是一个坏主意吗?还有什么我应该考虑的吗?
c# - 使用 ItemsSource 填充 WPF ListBox - 好主意?
我是(相对)经验丰富的 Cocoa/Objective-C 编码器,并且正在自学 C# 和 WPF 框架。
在 Cocoa 中,当填充 . 时NSTableView
,将委托和数据源分配给视图相对简单。然后使用这些委托/数据源方法来填充表,并确定其行为。
我正在组合一个简单的应用程序,它有一个对象列表,我们称它们为Dog
对象,每个对象都有一个public string name
. 这是 的返回值Dog.ToString()
。
对象将显示在 中ListBox
,我想使用与 Cocoa 类似的模式填充此视图NSTableViewDataSource
。它目前似乎正在使用:
但我想知道这是多么正确。我已经安装 Visual Studio 不到一个小时,所以可以肯定地说我不知道自己在做什么。
- 这是正确的模式吗?
- 将第二项添加到列表 (
spot
) 似乎可以ListBox
正确更新,但我想知道是什么触发了更新? - 如果我
Pound
在后台线程上更新会发生什么? - 如何手动要求
ListBox
更新自身?(我什至需要吗?)
我知道我需要做的一个改变IEnumerable<Dog>
是将实现重构到它自己的类中,比如DogListItemsSource
,但我想确保在完善它之前我有一个可靠的方法。
随意在评论中指出我应该解决或记住的任何其他要点,无论大小。我想第一次以正确的方式学习这个。
c# - 在 foreach 循环中手动增加一个枚举器
我在 foreach 循环中有一个嵌套的 while 循环,我想在满足某个条件时无限期地推进枚举数。为此,我尝试将枚举器强制转换为 IEnumerator< T > (如果它在 foreach 循环中则必须如此),然后在强制转换的对象上调用 MoveNext() 但它给了我一个错误,说我无法转换它。
无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换将类型“System.DateTime”转换为 System.Collections.Generic.IEnumerator。
在 foreach 循环中手动增加 IEnumerator 的最佳方法是什么?
编辑:编辑显示while循环之后有代码,一旦满足条件,我想执行这就是为什么我想在while内手动递增然后打破它而不是继续,这会让我回到顶部. 如果这不可能,我相信最好的办法是重新设计我的工作方式。
c# - 实现 IEnumerator 的类的序列化
我编写了一个可以序列化和反序列化的程序,它做得很好(一旦我让它在一个子类上正常工作,我计划在子类上实现它)。但是,当我决定希望能够使用Foreach
.
在这不起作用之后,我发现必须实现IEnumerator
和IEnumerable
接口并将所需的方法添加到我的类中。所以我有,这确实让我可以循环浏览我的收藏。
当我尝试将这两件事结合起来时,问题就开始了......
序列化时,我最初收到此错误:
内:
{"The type ThereIsOnlyRules.Army was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically."}
我添加[XmlInclude(typeof(Employee))]
到我的类以防止此异常,但现在调用前两个根元素<ArrayofAnyType><AnyType>
而不是<ArmyListing><Army>
. 由于某种原因,我无法弄清楚如何将它们改回来[XmlRoot("whatever")]
没有效果。
反序列化时出现此错误{"There is an error in XML document (0, 0)."}
内部:{"Root element is missing."}
我已经搜索过-但似乎可以通过多种不同的方式生成此错误。我还没有找到任何适用于我的代码的解决方案(据我所知)。
我非常感谢有关我遇到的这些问题的原因或解决方案的一些信息!
形式