通过引用调用生成形式参数的别名,因此典型参数的每次更改也会影响形式参数,而pass-by value- result将结果复制到典型参数,当函数返回时,它将典型参数复制到正式。(请注意,按值调用结果与按值调用完全不同。)
除了这两个参数传递方法之间的实现差异外,在我看来最终的结果是相同的。
我的问题是这两种方法总是给出相同的结果,否则你能给出这两种方法返回不同结果的例子吗?
答案 0 :(得分:2)
如果在方法过程中读取原始变量,那将会有所不同。这可能是因为:
这是C#中的一个例子:
using System;
class Test
{
static void Main()
{
int p = 10;
Foo(ref p, () => Console.WriteLine(p));
}
static void Foo(ref int x, Action action)
{
action();
x = 20;
action();
}
}
这是
的输出10
20
...因为第二次调用action()
时,p
的值已经更改为20.如果这使用了按结果传递,则p
的值只会在Foo
返回时更改。