草庐IT

ienumerator

全部标签

c# - 无法进入返回 IEnumerable<T> 的方法?

我有一个像这样返回IEnumerable的方法..publicvirtualIEnumerableToPages(){//foreachlogicyieldreturnpages;//moreforeachlogicyieldreturnotherPages;//etc}这个方法似乎有效……在某种程度上。但莫名其妙的是,我无法踏入其中!我在周围放置调试器点,调试器直接通过它们!!!有谁知道为什么会发生这种情况? 最佳答案 在您枚举到方法之前,该方法不会运行。foo.ToPages().ToList()//willenumeratea

c# - 无法进入返回 IEnumerable<T> 的方法?

我有一个像这样返回IEnumerable的方法..publicvirtualIEnumerableToPages(){//foreachlogicyieldreturnpages;//moreforeachlogicyieldreturnotherPages;//etc}这个方法似乎有效……在某种程度上。但莫名其妙的是,我无法踏入其中!我在周围放置调试器点,调试器直接通过它们!!!有谁知道为什么会发生这种情况? 最佳答案 在您枚举到方法之前,该方法不会运行。foo.ToPages().ToList()//willenumeratea

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# - 是否可以在不使用 OrderBy 的情况下将 IEnumerable 转换为 IOrderedEnumerable?

假设有一个扩展方法可以根据SortMethod枚举指定的几种排序类型(即按各种属性排序)对IQueryable进行排序。publicstaticIOrderedEnumerableOrderByX(thisIQueryablevalues,SortMethod?sortMethod){IOrderedEnumerablequeryRes=null;switch(sortMethod){caseSortMethod.Method1:queryRes=values.OrderBy(a=>a.Property1);break;caseSortMethod.Method2:queryRes=v

c# - 是否可以在不使用 OrderBy 的情况下将 IEnumerable 转换为 IOrderedEnumerable?

假设有一个扩展方法可以根据SortMethod枚举指定的几种排序类型(即按各种属性排序)对IQueryable进行排序。publicstaticIOrderedEnumerableOrderByX(thisIQueryablevalues,SortMethod?sortMethod){IOrderedEnumerablequeryRes=null;switch(sortMethod){caseSortMethod.Method1:queryRes=values.OrderBy(a=>a.Property1);break;caseSortMethod.Method2:queryRes=v

c# - 在 C# : How to declare a generic Dictionary with a type as key and an IEnumerable<> of that type as value? 中

我想声明一个字典,用于存储特定类型的类型化IEnumerable,并将该类型作为键,如下所示:(根据johnyg的评论进行编辑)privateIDictionary>_dataOfTypewhereT:BaseClass;//doesnotcompile!我要存储的具体类都是从BaseClass派生的,因此想用它作为约束。编译器提示它希望在成员名称后有一个分号。如果可行,我希望这将使以后从字典中检索变得简单,如下所示:IEnumerableconcreteData;_sitesOfType.TryGetValue(typeof(ConcreteType),outconcreteData

c# - 在 C# : How to declare a generic Dictionary with a type as key and an IEnumerable<> of that type as value? 中

我想声明一个字典,用于存储特定类型的类型化IEnumerable,并将该类型作为键,如下所示:(根据johnyg的评论进行编辑)privateIDictionary>_dataOfTypewhereT:BaseClass;//doesnotcompile!我要存储的具体类都是从BaseClass派生的,因此想用它作为约束。编译器提示它希望在成员名称后有一个分号。如果可行,我希望这将使以后从字典中检索变得简单,如下所示:IEnumerableconcreteData;_sitesOfType.TryGetValue(typeof(ConcreteType),outconcreteData

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