考虑以下代码片段(在 Windows 窗体应用程序中编写):
public partial class Form1
{
....
public void Caller()
{
Form1 myRef = this;
Change(ref this) //--> won't compile because *this* is read-only
Change(ref myRef); //--> compiles but doesn't work.
}
....
public void Change(ref Form1 theRef)
{
theRef = new Form1();
theRef.Text = "I am a new form";
}
}
this
不允许通过引用传递。这没关系,也很明智。但是为什么如上所示间接传递this
不起作用?据我所知,如果通过引用传递参数,则被调用方法中的任何赋值都会反映给调用者方法。为什么它在这里不起作用?
更新以明确问题
1-我没有努力完成任何特别的事情。我只是想测试一下ref
。
2-我误解的原因ref
是我完全忘记了Form1 myRef = this
实际上将底层对象的地址复制到;所以变量与它们无关,只是它们都指向同一个对象。Form1
myRef
myRef
this