2009-06-18 68 views

回答

9

不幸的是,你必須自己做。 For Each構造使用實現IEnumerator接口迭代序列,接口不公開任何成員以指示其序列中的位置或當前索引。

+0

有誰知道這是爲什麼? – 2009-06-25 19:26:40

2

你必須自己動手。大多數情況下,如果你使用For Each(foreach在C#中),那麼你不關心迭代計數。

0

在M個元素的集合中找到的每個元素M的Foreach循環。

所以,不,沒有明確的迭代計數,因爲會有一個FOR循環。

6

如果您使用的是Visual Studio 2009(或VB.Net 9.0),則可以使用Select覆蓋來獲取包含這些值的計數。

For Each cur in col.Select(Function(x,i) New With { .Index = i, .Value = x }) 
... 
Next 
7

如果我需要一個迭代變量,我用一個for循環,而不是(每IEnumerable的應該有一個.Count之間的屬性)。

而不是

For Each element as MyType in MyList 
    .... 
Next 

For i as integer = 0 to MyList.Count - 1 
    element = MyList(i) 
    .... 
Next 

這將是同樣的結果。您有i作爲迭代器,element包含當前元素。