如何在不使用foreach循環的情況下從列表中檢索元素?如何檢索列表中的元素而不使用C#中的foreach循環?
回答
var list = new List<int> { 1, 2, 3, 4, 5 };
for (int i = 0; i < list.Count(); i++)
{
var element = list[i];
}
或
var list = new List<int> { 1, 2, 3, 4, 5 };
using (var enumerator = list.GetEnumerator())
{
while (enumerator.MoveNext())
{
var element = enumerator.Current;
}
}
不要忘記處置枚舉循環。 – 2010-02-16 06:44:07
謝謝 - 更新 – 2010-02-18 00:36:56
你說的名單,但你不指定List<T>
類作爲this answer assumes(也,它可能會補充說,這個問題的答案使用Count()擴展方法。既然你知道這個類型是List<T>
它更好地使用Count 財產)。
如果你總是使用IList<T>
接口實現,那麼使用迭代索引然後使用該值訪問索引器的for循環可以正常工作。
但是,如果你正在處理IEnumerable<T>
實現,這不會總是奏效。相反,您必須執行以下操作:
// Get the IEnumerator<T> from the list.
IEnumerator<T> enumerator = list.GetEnumerable();
// Dispose if necessary.
using (enumerator as IDisposable)
{
// Cycle while there are items.
while (enumerator.MoveNext())
{
// Work with enumerator.Current here.
}
}
這是編譯器如何在編譯時展開foreach語句的方式。基本上,因爲IEnumerable<T>
實現可以實現IDisposable,它試圖通過強制轉換爲IDisposable的準備是不測。如果它不能,那麼using語句在退出時不會做任何事情。
當使用陣列上的foreach,編譯器會擴展到其通過索引來訪問項目的環路(假設你直接數組實例工作),而不是上面枚舉的方法。
如果你想避免這種類型的循環:
foreach(var item in list) {};
...那麼你可以使用LINQ或Lambda表達式搜索,然後從列表中檢索。
例如:
using System.Linq;
// ... with Lambda
var ints = new List<int>(){1,2,3,4,5};
var evenInts = ints.ForEach(i => i % 2 == 0);
// with straight Linq-to-objects:
var oddInts = from i in ints
where i % 2 == 1
select i;
- 1. 使用foreach循環來檢索的TabPages
- 2. 如何在C#中使用foreach循環#
- 3. 如何使用循環訪問C#中的表單元素?
- 4. C - 從列表中檢索元素
- 5. 如何循環表格元素並使用JQuery檢索數據元素?
- 6. 如何在laravel中使用@foreach循環Form :: select元素
- 7. PHP foreach循環元素索引
- 8. 修改循環中的列表元素
- 9. 如何在foreach循環返回元素
- 10. 如何讓foreach循環DevExpress.Web.ASPxGridView.ASPxGridView行元素
- 11. 在c#中循環交錯數組---使用foreach而不是for?
- 12. 元素在foreach循環中爲null
- 13. 使用foreach循環來檢索GroupBox中的TextBox
- 14. 使用unsigned char。如何替換元素而不使用循環?
- 15. 如何在C Shell腳本中添加for循環而不是foreach循環?
- 16. foreach循環不遍歷列表中的所有項目 - C#
- 17. 如何在c中的Xelement中使用foreach循環#
- 18. 如何顯示foreach循環中的元素總數?
- 19. 檢索列表中的元素perl
- 20. Smarty的:打印的陣列的特定元件,而不使用foreach循環
- 21. 使用foreach循環爲c#中的兩個列表創建列表值
- 22. 更好的替代「foreach循環」,不使用每個元素
- 23. foreach while循環與div裏面的列表元素
- 24. 如何使用crontab在php中循環使用循環中的元素
- 25. Python的循環打印列表字符而不是元素
- 26. Python:在循環列表中刪除列表中的元素
- 27. 在java中使用While循環計算列表的元素
- 28. 使用while循環在列表中添加元素而不覆蓋以前的元素
- 29. 使用foreach循環創建Excel表格中的列表
- 30. 如何使用C#中的foreach在列表中創建列表?
我想知道爲什麼你不希望使用的foreach。它可能會顯示一個細節,幫助我們更好地回答你的問題。 – 2010-02-16 04:14:37
你想做什麼?爲什麼你不能使用foreach?列表索引器呢? – 2010-02-16 04:16:39
我喜歡使用迭代 – ratty 2010-02-16 04:16:57