'List<T>.ForEach()' 和可变性

6

我想要翻译一个 List<T> 中的所有元素。这个方法可以实现:

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

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

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

想法?

也许 foreach 返回一个新列表? - Marco
1个回答

12

你当前的代码只是将局部变量v重新赋值为一个新的值,它并没有引用列表中原来的值。这相当于写入:

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

要将值写回原始值,请使用ConvertAll


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

啊,谢谢。我想要一个按引用遍历,但这对于C#来说太像C++了... - Tili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接