2009-10-07 117 views

回答

81

定期對每個會做:

foreach (var item in collection) 
{ 
    // do your stuff 
} 
+0

這比.ElementAt()更快。不幸的是,我的投票被鎖定在Alexa的答案上,所以我無法撤消它,但這是最好的答案。 +1 – 2016-11-22 17:24:54

5
foreach (var element in instanceOfAClassThatImplelemntIEnumerable) 
{ 

} 
69

隨着已經建議使用foreach循環的方法,我想我還提到,實現IEnumerable任何對象還提供了一個IEnumerator通過GetEnumerator方法接口。雖然此方法通常不是必需的,但可用於手動迭代集合,並且在爲集合編寫自己的擴展方法時特別有用。

IEnumerable<T> mySequence; 
using (var sequenceEnum = mySequence.GetEnumerator()) 
{ 
    while (sequenceEnum.MoveNext()) 
    { 
     // Do something with sequenceEnum.Current. 
    } 
} 

一個典型的例子是,當你要遍歷兩個序列同時,這是無法實現的foreach循環。

+3

不要忘記處理枚舉數。 – 2009-10-07 17:14:24

+0

@Eric:是的,我會添加它,因爲它很容易錯過。 – Noldorin 2009-10-07 17:16:31

+1

+1,手動迭代有時可能有用。 – 2012-05-08 14:34:40

29

,甚至是非常經典的老式方法

for(int i = 0; i < collection.Count(); i++) 
{ 
    string str1 = collection.ElementAt(i); 
    // do your stuff 
} 

也許你會喜歡這種方法也:-)

+3

這爲什麼有這麼多upvotes?這將列舉枚舉2n次而不是一次。 – 2016-10-27 07:33:44

+1

@RomanReiner因爲這個工程,有些人不關心性能:) – Khateeb321 2016-11-17 14:53:58

+0

@RomanReiner這是很好的例子,我需要分配一個集合的每個元素到另一個集合,我想我不能這樣做使用foreach – AminM 2017-02-18 12:50:53