當測試一個簡單的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