2011-02-17 55 views
5

我想翻譯List<T>中的所有點。這工作:'列表<T> .ForEach()'和可變性

for (int i = 0; i <PolygonBase.Count; ++i) 
{ 
    PolygonBase[i] = PolygonBase[i] + MousePos; 
} 

但使用List<T>.ForEach並不:

PolygonBase.ForEach(v => v += MousePos); 

想法?

+0

也許foreach返回一個新的列表? – Marco 2011-02-17 20:59:23

回答

11

您當前的代碼只是將本地變量v重新分配給一個新值 - 它不會引用回列表中的原始值。這是寫作的等效:

foreach(int v in PolygonBase) 
{ 
    v += MousePos; 
} 

寫回原來的值,使用ConvertAll

PolygonBase.ConvertAll(v => v += MousePos); 
+0

啊,謝謝。我正在尋找通過引用得到一個foreach,但這種方式太C++的C#... – Tili 2011-02-17 21:07:20