簡體   English   中英

“名單 <T> .ForEach()&#39;和可變性

[英]'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM