我想翻譯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);
想法?
我想翻譯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);
想法?
您當前的代碼只是將本地變量v
重新分配給一個新值 - 它不會引用回列表中的原始值。這是寫作的等效:
foreach(int v in PolygonBase)
{
v += MousePos;
}
寫回原來的值,使用ConvertAll
:
PolygonBase.ConvertAll(v => v += MousePos);
啊,謝謝。我正在尋找通過引用得到一個foreach,但這種方式太C++的C#... – Tili 2011-02-17 21:07:20
的ForEach是不可變的,它不以任何方式改變的數據結構。 看看這個威脅。 Using conditional lambda statements with a foreach Action on a list
也許foreach返回一個新的列表? – Marco 2011-02-17 20:59:23