当测试一个简单的ForEach
扩展方法时,遇到了对我来说意想不到的结果。行动/委托可以改变它的参数值吗?
ForEach
方法
public static void ForEach<T>(this IEnumerable<T> list, Action<T> action)
{
if (action == null) throw new ArgumentNullException("action");
foreach (T element in list)
{
action(element);
}
}
Test
方法
[TestMethod]
public void BasicForEachTest()
{
int[] numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
numbers.ForEach(num =>
{
num = 0;
});
Assert.AreEqual(0, numbers.Sum());
}
为什么会numbers.Sum()
等于55,而不是0?
@ 249076:是的,这将工作。 – 2011-12-13 18:55:05