動作我已經實現了這個擴展方法。任何想法爲什麼這不起作用?謝謝C#的IEnumerable上<T>
4
A
回答
8
yield return
讓你查詢懶,換言之,只有當你開始遍歷元素的方法執行。如果deferred fashion執行了許多LINQ操作符。接下來的代碼演示了這個問題
new[] {1,2}.DoForEach(Console.WriteLine).ToList();
打印:
1
2
而
new[] {1,2}.DoForEach(Console.WriteLine);
打印什麼
給予充分例如,檢查下一個片段:
IEnumerable items = new[] {1,2}.DoForEach(s => Console.WriteLine("inside query:"+s));
foreach (var item in items)
{
Console.WriteLine ("inside loop:" + item);
}
這將打印
inside query:1
inside loop:1
inside query:2
inside loop:2
,它會開始打印只在第一foreach
迭代。當您構建查詢時沒有元素被打印
5
這是因爲你正在返回一個迭代器,但沒有執行它。考慮到你寫了什麼,你想要在列表上執行一個操作,而不是從它返回一個枚舉器,所以看起來你需要讓DoForEach()函數返回void,並且擺脫返回它。這應該將您的輸出寫入控制檯。
編輯:這是顯示我的意思是一個片段:
public static void DoForEach<T>(this IEnumerable<T> data, Action<T> action)
{
foreach (T value in data)
{
action(value);
}
}
相關問題
- 1. 將IEnumerable <T>與IEnumerable比較IEnumerable <IEnumerable <T>>
- 2. 瞭解IEnumerable <T> C#
- 3. IEnumerable <SelectListItem>在C#mvc
- 4. IEnumerable的<IEnumerable的<T>>到的IEnumerable <T>使用LINQ
- 5. 的EntitySet <IEnumerable的<T>>到IEnumerable的<T>
- 6. IEnumerable的<T>到的IDictionary <U,IEnumerable的<T>>
- 7. 鑄造IEnumerable <Derived> IEnumerable <BaseClass>
- 8. 從IEnumerable <IEnumerable <T>>
- 9. 分組IEnumerable <IEnumerable <int>>
- 10. IEnumerable <IEnumerable <T>> to string [] []
- 11. 產量返回IEnumerable <IEnumerable <...>>
- 12. 在C++上的Windows客戶端上獲取Kerberos tgt
- 13. 如何IEnumerable的轉換<MySpecificEnumType>到通用的IEnumerable <Enum>在WPF(C#)
- 14. 如何將IEnumerable <IEnumerable <IGrouping <int,string> >>轉換爲IEnumerable <IEnumerable <string>>
- 15. C#中的嵌套IEnumerable <>
- 16. 初始化的IEnumerable <string>在C#
- 17. 轉換IEnumerable的<T>反對[,] C#
- 18. 轉換一個通用的IEnumerable <T>到了IEnumerable <KeyValuePair>(C#)
- 19. 在C#中,如何將IEnumerable <IMyInterface>的數組轉換爲IEnumerable <T>?
- 20. 選擇自IEnumerable <T>到IEnumerable的<Quantity<T>>
- 21. Mapper.Map <任務<IEnumerable的<Address>>,任務<IEnumerable的<AddressView>>()
- 22. c#如何使用通用IEnumerable上的包含<T>
- 23. IEnumerable上的計數<dynamic>
- 24. LINQ,分組上的IEnumerable <object[]>
- 25. 如何將IEnumerable <IEnumerable <Foo>>減少到IEnumerable <Foo>?
- 26. 如何將IEnumerable <IEnumerable <T>>轉換爲IEnumerable <T>
- 27. C#,objectCollection.OfType <T>()和foreach(T item in objectCollection),IEnumerable to IEnumerable <T>
- 28. 返回列表<object>自IEnumerable C#
- 29. C#IEnumerable <string>和字符串[]
- 30. C#關於IEnumerable <T> .Aggregate
aaah明白了。謝謝 – 2013-05-05 20:18:22