[英]'List<T>.ForEach()' and mutability
我想翻譯List<T>
所有點。 這有效:
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不可變,它不會以任何方式改變數據結構。 看看這個威脅。 在列表上使用帶有foreach Action的條件lambda語句
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.