-5
A
回答
8
GetEnumerator()返回可用於遍歷集合的對象。
比方說,你有一個數字的下面的列表:
var numbers = new List<Int32>() {1, 2, 3, 4, 5};
,並希望所有甚至轉換爲字符串的數字,您可以編寫以下方法:
IEnumerable<string> GetEvenStrings(IEnumerable<Int32> source)
{
using (var enumerator = source.GetEnumerator())
while (enumerator.MoveNext())
if (enumerator.Current % 2 == 0)
yield return enumerator.Current.ToString();
}
的MoveNext方法將有Enumerator
的Current屬性指向集合中的下一個元素,如果沒有元素(否則爲true
),將返回false
。
這是如何使用枚舉器的一個非常基本的例子。更復雜和實際的用途是例如此implementation的Zip
方法:
private static IEnumerable<TResult> ZipImpl<TFirst, TSecond, TResult>(
IEnumerable<TFirst> first,
IEnumerable<TSecond> second,
Func<TFirst, TSecond, TResult> resultSelector)
{
using (IEnumerator<TFirst> iterator1 = first.GetEnumerator())
using (IEnumerator<TSecond> iterator2 = second.GetEnumerator())
{
while (iterator1.MoveNext() && iterator2.MoveNext())
{
yield return resultSelector(iterator1.Current, iterator2.Current);
}
}
}
(此代碼是從喬恩斯基特的Edulinq project,我強烈建議)
在這個例子中,Enumerator
用於同時遍歷兩個集合,導致一個單一的集合。
一般情況下,你可能想,如果你想遍歷集合一步一步的應用一些邏輯來使用Enumerator
,你不想先消耗整個集合,因爲集合可能正在使用deffered execution。
相關問題
- 1. C#如何使遞歸版本的GetEnumerator()
- 2. 如何使用IEnumerable接口並同時讓XMLSerializer不使用GetEnumerator()?
- 3. Powershell/GetEnumerator
- 4. 如何在For Each語句中使用不同的GetEnumerator()
- 5. 如何告訴DataContract使用基類的GetEnumerator?
- 6. 的GetEnumerator在C#
- 7. 重載的GetEnumerator
- 8. ++實現的GetEnumerator用C
- 9. MoleNotImplementedException通過的GetEnumerator
- 10. GetEnumerator接口實現
- 11. 我如何使用Fsharp中的GetEnumerator獲取序列中的一個seq?
- 12. MSXMLl 6.0 XmlDOMNodeList在調用時失敗GetEnumerator
- 13. 這會調用GetEnumerator()多於一次嗎?
- 14. MVC強類型到的GetEnumerator()
- 15. 錯誤:不包含的GetEnumerator
- 16. 讓GetEnumerator線程安全
- 17. foreach和GetEnumerator/asp.net mvc 2
- 18. IEnumerable.GetEnumerator()和IEnumerable <T> .GetEnumerator()
- 19. 對於僅具有GetEnumerator的對象使用LINQ()
- 20. 如何在更新面板中實現GetEnumerator方法?
- 21. mvc3模型不包含GetEnumerator的定義
- 22. 我的GetEnumerator會導致死鎖嗎?
- 23. 訪問的IEnumerable <Type> .GetEnumerator()
- 24. 解決Windows Phone 8.1編譯錯誤:GetEnumerator
- 25. 不包含公共認定中的GetEnumerator
- 26. public IEnumerator GetEnumerator()的返回類型?
- 27. 覆蓋GetEnumerator的默認行爲
- 28. 在這種情況下GetEnumerator不存在
- 29. foreach語句,不包含「的GetEnumerator」
- 30. Delphi,在Excel Interop Worksheets集合中使用for循環時,如何處理「沒有GetEnumerator存在」錯誤?
在問這個問題之前,你甚至嘗試過閱讀一些文檔嗎? – 2012-07-18 20:27:56