问题标签 [enumerator]
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.
c# - 使用 .GetType() 可能对 IEnumerable 警告进行多次枚举
我使用以下代码收到 ReSharper 警告“IEnumerable 的可能多重枚举”:
正如在许多 stackoverflow-topics 中描述的(以及在http://confluence.jetbrains.net/display/ReSharper/Possible+multiple+enumeration+of+IEnumerable上)ReSharper 识别出查询运行了两次。
我的问题是,为什么“GetType()”语句被识别为查询。
有什么建议吗?
提前致谢。
ruby - 如何重载 ***each*** 以建立所需的顺序
这类似于Overload each method with order中发布的问题,但不同之处在于我希望在不重新定义的情况下支持所有关联的可枚举方法。
使用 mixin,如何在不重新定义每个方法的情况下覆盖enumerable 提供的每个和所有关联方法。例如:
生成:
重新定义每个似乎并没有重新定义收集!
c# - 为什么 C# Arrays 使用 Enumeration 的引用类型,但 List使用可变结构?
根据我的阅读,出于性能原因,某些集合的枚举器类型被设计为可变结构而不是引用类型。List.Enumerator 是最著名的。
我正在研究一些使用数组的旧代码,并惊讶地发现 C# 数组返回类型 SZGenericArrayEnumerator 作为它们的通用枚举类型,这是一个引用类型。
我想知道是否有人知道为什么当许多其他性能关键集合使用可变结构时,Array 的通用迭代器被实现为引用类型。
c# - 为什么 C# 中没有 ReverseEnumerator?
有谁知道是否有特定原因或设计决定在 C# 中不包含反向枚举器?reverse_iterator
如果有一个等价于 C++就像 Enumerator 是等价于 C++ 一样,那就太好了iterator
。可以反向迭代的集合只会实现类似 IReverseEnumerable 的东西,并且可以执行以下操作:
这样,您将能够以相同的方式迭代 Lists 和 LinkedLists,而不是对一个链接使用索引器,对另一个链接使用先前的链接,从而实现更好的抽象
c# - 枚举器作为参数
好,我们从这个非常简单的按钮点击方法开始
这个方法什么都不做,因为每个断言都优雅地通过了。一切都很好,直到我相信我应该介绍一种消除冗余的方法
尽管如此,这种重构还是很简单的(至少对我而言)。它确实破坏了程序!在第二次调用 AssertNext 时,似乎枚举器已经重置到起点并导致断言失败。
我无法理解发生了什么。我真的觉得自己是这个谜题的初学者。
我在这里想念什么?
c# - 反转队列
我正在使用扩展方法 Reverse(),但它似乎没有做任何事情。MSDN 声明它是作为延迟执行实现的,但是我似乎无法让它工作。
我是这样称呼它的。
这是 MSDN 所说的:
该方法是通过使用延迟执行来实现的。立即返回值是一个存储执行操作所需的所有信息的对象。在通过直接调用其 GetEnumerator 方法或使用 Visual C# 中的 foreach 或 Visual Basic 中的 For Each 枚举对象之前,不会执行此方法表示的查询。
我不确定调用 GetEnumerator 意味着什么。我已经尝试通过简单地执行以下操作但无济于事:
我觉得我在这里做的事情很愚蠢,任何帮助将不胜感激!
java - Java循环退出条件
我正在用java编写一个网络服务器,我有一个小问题。让代码说话:
现在,正如评论中所说,如果我否定/翻转/更改变量 this.Listening 的值,循环不会停止,而是在下一个连接时退出。
起初我没有在枚举器中实现服务器,我用一个类来实现,它在被序列化后未能成为单例,但它按照我的预期执行。我尝试了 while (condition) done,以及 do while(condition) 循环。
所有帮助将不胜感激。
delphi - 我需要释放 GetEnumerator 返回的枚举器吗?
我想将枚举器用于 Delphi XE2 的通用集合。我想知道,谁拥有函数 GetEnumerator 返回的 TEnumerator(我在文档中没有找到任何明确的答案):
- 我是否拥有它并且需要在使用后释放它?
- 还是它归收藏所有,我不必关心发布它?
代码:
c# - 如何告诉 DataContract 使用基类的 GetEnumerator?
我有一个实现字典的通用类。我创建了一个自定义 GetEnumerator 循环遍历值而不是 KeyValuePairs 因为我通常不关心键。这是一个快速示例:
我没有向我的类添加任何数据(我只添加了方法),因此为了使其可序列化,我将 [DataContract] 添加到类的顶部,而没有任何 [DataMember] 标记。我认为这只会使用基类的数据进行序列化/反序列化,但出现以下错误:
无法将类型为“Enumerator[System.String,SignalEngineeringTestPlanner.Asset]”的对象转换为类型“System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2
我认为这意味着 DataContractSerializer 正在调用孩子的枚举器并且它变得很困惑,因为它需要一对但它正在获取一个 Asset 对象。有没有一种方法可以(1)告诉 DataContractSerializer 使用基类的枚举器,或者(2)创建一个特殊的枚举函数并告诉 DataContractSerializer 只使用那个?
c# - 集合被修改,枚举操作可能无法执行
我有多线程应用程序,我收到此错误
我的收藏可能有问题,因为在一个线程上我阅读了我的收藏,而在另一个线程上我修改了收藏。
我正在尝试使用此代码锁定集合,但不起作用。
有什么想法可以解决这个问题吗?