【发布时间】:2012-01-19 15:19:03
【问题描述】:
在测试一个简单的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?
【问题讨论】:
标签: c# linq foreach extension-methods anonymous-function