【发布时间】:2014-03-16 09:11:10
【问题描述】:
我正在尝试使用 Array.ForEach() 扩展方法循环遍历数组中的过滤元素列表,然后修改这些值,不幸的是,我猜这似乎不起作用,因为它没有实际修改每个元素的参考值。
除了将Array.ForEach() 的结果存储到一个单独的数组中,然后将该数组克隆到原始数组之外,还有其他方法吗?另外我知道,如果我使用for 循环,我显然可以在不克隆的情况下完成所有这些操作,但如果我能这样做,它会更干净,代码也会更少。
这是sn-p:
Array.ForEach(Array.FindAll(starts, e => e < 0), e => e = 0);
【问题讨论】:
-
你想要
starts.ForEachRef((ref int e) => e = Math.Max(0, e));这个语法吗?您可以编写一个新类型public delegate void ActionRef<T>(ref T arg);,然后您可以自己编写扩展方法ForEachRef。
标签: c# arrays oop foreach extension-methods