我读的书曼宁有关LINQ,有一个例子:LINQ表达式中的值是否通过引用传递?
static class QueryReuse
{
static double Square(double n)
{
Console.WriteLine("Computing Square("+n+")...");
return Math.Pow(n, 2);
}
public static void Main()
{
int[] numbers = {1, 2, 3};
var query =
from n in numbers
select Square(n);
foreach (var n in query)
Console.WriteLine(n);
for (int i = 0; i < numbers.Length; i++)
numbers[i] = numbers[i]+10;
Console.WriteLine("- Collection updated -");
foreach (var n in query)
Console.WriteLine(n);
}
}
与下面的输出:
Computing Square(1)...
1
Computing Square(2)...
4
Computing Square(3)...
9
- Collection updated -
Computing Square(11)...
121
Computing Square(12)...
144
Computing Square(13)...
169
这是否意味着,“数字”是按引用传递?这种行为是否需要执行懒惰的执行和收益?或者我在这里错了吗?
“按引用传递”和“按值传递引用”有所不同。请参阅http://pobox.com/~skeet/csharp/parameters.html – 2010-09-22 09:16:47