2011-02-17 30 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