草庐IT

IEnumerator

全部标签

c# - 创建 IEnumerator 的原因是什么?

IEnumerator包含MoveNext()、Reset()和Current作为其成员。现在假设我已将这些方法和属性移动到IEnumerable接口(interface)并删除了GetEnumerator()方法和IEnumerator接口(interface)。现在,实现IEnumerable的类的对象将能够访问方法和属性,因此可以对其进行迭代。为什么没有遵循上述方法以及我将面临的问题如果我跟着它?IEnumerator接口(interface)的存在如何解决这些问题? 最佳答案 迭代器包含集合的单独状态:它包含一个游标,指示您

c# - 创建 IEnumerator 的原因是什么?

IEnumerator包含MoveNext()、Reset()和Current作为其成员。现在假设我已将这些方法和属性移动到IEnumerable接口(interface)并删除了GetEnumerator()方法和IEnumerator接口(interface)。现在,实现IEnumerable的类的对象将能够访问方法和属性,因此可以对其进行迭代。为什么没有遵循上述方法以及我将面临的问题如果我跟着它?IEnumerator接口(interface)的存在如何解决这些问题? 最佳答案 迭代器包含集合的单独状态:它包含一个游标,指示您

c# - 我什么时候应该在 C# 中使用 IEnumerator 进行循环?

我想知道是否有任何时候使用IEnumerator而不是foreach循环来迭代集合?例如,是否有任何时候使用以下代码示例中的任何一个比另一个更好?IEnumeratorclassesEnum=myClasses.GetEnumerator();while(classesEnum.MoveNext())Console.WriteLine(classesEnum.Current);代替foreach(varclassinmyClasses)Console.WriteLine(class); 最佳答案 首先,请注意您的示例(foreach

c# - 我什么时候应该在 C# 中使用 IEnumerator 进行循环?

我想知道是否有任何时候使用IEnumerator而不是foreach循环来迭代集合?例如,是否有任何时候使用以下代码示例中的任何一个比另一个更好?IEnumeratorclassesEnum=myClasses.GetEnumerator();while(classesEnum.MoveNext())Console.WriteLine(classesEnum.Current);代替foreach(varclassinmyClasses)Console.WriteLine(class); 最佳答案 首先,请注意您的示例(foreach

c# - 为什么 IEnumerator.Current 的错误处理不同于 IEnumerator<T>.Current?

我原以为对实现了IEnumerable的空集合执行以下代码会抛出异常:varenumerator=collection.GetEnumerator();enumerator.MoveNext();vartype=enumerator.Current.GetType();//Surelyshouldthrow?因为集合是空的,然后访问IEnumerator.Current无效,我本以为会有异常(exception)。但是,List不会抛出异常.这是thedocumentationforIEnumerator.Current允许的,其中指出Current在以下任何条件下未定义:枚举数位于集

c# - 为什么 IEnumerator.Current 的错误处理不同于 IEnumerator<T>.Current?

我原以为对实现了IEnumerable的空集合执行以下代码会抛出异常:varenumerator=collection.GetEnumerator();enumerator.MoveNext();vartype=enumerator.Current.GetType();//Surelyshouldthrow?因为集合是空的,然后访问IEnumerator.Current无效,我本以为会有异常(exception)。但是,List不会抛出异常.这是thedocumentationforIEnumerator.Current允许的,其中指出Current在以下任何条件下未定义:枚举数位于集

c# - 将 IEnumerator 转换为通用 IEnumerator 的最佳方法是什么?

我正在为C#.NET3.5中的自定义ConfigurationHandler编写自定义ConfigurationElementCollection,我想将IEnumerator公开为通用IEnumerator。实现此目标的最佳方法是什么?我目前使用的代码:publicnewIEnumeratorGetEnumerator(){varlist=newList();varbaseEnum=base.GetEnumerator();while(baseEnum.MoveNext()){varobj=baseEnum.CurrentasGenericObject;if(obj!=null)li

c# - 将 IEnumerator 转换为通用 IEnumerator 的最佳方法是什么?

我正在为C#.NET3.5中的自定义ConfigurationHandler编写自定义ConfigurationElementCollection,我想将IEnumerator公开为通用IEnumerator。实现此目标的最佳方法是什么?我目前使用的代码:publicnewIEnumeratorGetEnumerator(){varlist=newList();varbaseEnum=base.GetEnumerator();while(baseEnum.MoveNext()){varobj=baseEnum.CurrentasGenericObject;if(obj!=null)li

c# - Yield Return == IEnumerable 和 IEnumerator 是吗?

yieldreturn是实现IEnumerable和IEnumerator的捷径吗? 最佳答案 是的,是的。您可以在我的书《深入了解C#》的第6章中找到更多相关信息。幸运的是第6章是availableforfree来自Manning'swebsite.我还有两个otherarticles在本书的网站上。欢迎反馈。 关于c#-YieldReturn==IEnumerable和IEnumerator是吗?,我们在StackOverflow上找到一个类似的问题: h

c# - Yield Return == IEnumerable 和 IEnumerator 是吗?

yieldreturn是实现IEnumerable和IEnumerator的捷径吗? 最佳答案 是的,是的。您可以在我的书《深入了解C#》的第6章中找到更多相关信息。幸运的是第6章是availableforfree来自Manning'swebsite.我还有两个otherarticles在本书的网站上。欢迎反馈。 关于c#-YieldReturn==IEnumerable和IEnumerator是吗?,我们在StackOverflow上找到一个类似的问题: h