【问题标题】:'List<T>.ForEach()' and mutability'List<T>.ForEach()' 和可变性
【发布时间】:2011-06-29 09:42:27
【问题描述】:

我想翻译List&lt;T&gt; 中的所有点。这有效:

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

但使用List&lt;T&gt;.ForEach 不会:

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

想法?

【问题讨论】:

  • 也许 foreach 返回一个新列表?

标签: c# list foreach mutability


【解决方案1】:

您当前的代码只是将局部变量 v 重新分配给一个新值 - 它不会引用列表中的原始值。相当于写作:

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

要写回原始值,请使用ConvertAll

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

【讨论】:

  • 啊,谢谢。我希望通过引用获得一个 foreach,但这对于 c# 来说也是 C++...
猜你喜欢
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
相关资源
最近更新 更多