引用C#-foo中的新赋值,是否使用相同的引用传播到其他函数
本文关键字:引用 函数 其他 传播 新赋值 C#-foo 赋值 是否 | 更新日期: 2023-09-27 18:00:59
我的基本问题是问,如果我在一个方法中更改ref的引用,它是否反映在另一个方法(如C++中的双指针(中?
method()
{
referenceTypeInt t = new t(1);
asyncCall foo(ref t);
bar(ref t);
}
foo(ref a)
{
a = new t(3);
}
bar (ref a)
{
wait for 10 seconds/until foo finishes;
Console.print ("t is" t.ToString())
}
上面是粗略的伪代码,但上面是3吗?
ref
通常就是这样工作的。
然而,这里可能有一点很糟糕。我不确定这是否:
asyncCall foo(ref t);
是新的异步CTP的伪代码(在这种情况下,它应该是await foo(ref t);
(。如果这是一个使用新的async/await语法的异步方法调用,那么这将不起作用。ref
和out
参数在async
方法中不受支持(类似于迭代器中不支持它们(。
是的,这就是引用的要点。它表示参数应被视为变量的别名,因此分配给它将改变变量本身。由于您在bar中再次引用,所以您有了另一个别名,所以更改反映在输出中。