gpt4 book ai didi

c# - 如何使用 IEnumerator.Reset()?

转载 作者:IT王子 更新时间:2023-10-29 04:04:48 25 4
gpt4 key购买 nike

到底怎样才是正确的调用方式IEnumerator.Reset

文档说:

The Reset method is provided for COM interoperability. It does not necessarily need to be implemented; instead, the implementer can simply throw a NotSupportedException.

好的,那是否意味着我不应该调用它?

使用异常进行流量控制是如此的诱人:

using (enumerator = GetSomeExpensiveEnumerator())
{
while (enumerator.MoveNext()) { ... }

try { enumerator.Reset(); } //Try an inexpensive method
catch (NotSupportedException)
{ enumerator = GetSomeExpensiveEnumerator(); } //Fine, get another one

while (enumerator.MoveNext()) { ... }
}

我们应该如何使用它?或者我们根本不打算从托管代码中使用它?

最佳答案

从不;最终这是一个错误。多次迭代序列的正确方法是再次调用 .GetEnumerator() - 即再次使用 foreach。如果您的数据是不可重复的(或重复的成本很高),请通过 .ToList() 或类似方式对其进行缓冲。

迭代器 block 为此方法抛出异常是语言规范中的正式要求。因此,您不能指望它正常工作。曾经。

关于c# - 如何使用 IEnumerator.Reset()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com