这个为什么不论是 form1 = form2;还是form2=form1;这两个引用变量最后都引用form1的那个实例。不应该是把“=”后边的交给前边的引用吗。
Form form1 = new Form();
Form form2=new Form();
form1 = form2;
//form2=form1;
//form1.Text = "1";
form1.ShowDialog();
form2.ShowDialog();
Console.WriteLine(form1.GetHashCode());
Console.WriteLine(form2.GetHashCode());
你这么new两个窗口对象,都使用默认构造函数,你怎么判断都引用的是form1的呢
这是对象赋值语句。form1 = form2;
两个引用变量最后都引用form1的那个实例 是不准确的。
建议自行检查。
两个都指向form2 new出来的那个。这个东西类似C++里面引用, form1 = form2后,form1就丢失了,系统回收了
改成下面的例子你就看出来问题了
Form form1 = new Form();
Form form2=new Form();
Console.WriteLine(form1.GetHashCode());
Console.WriteLine(form2.GetHashCode());
form1 = form2;
form1.ShowDialog();
form2.ShowDialog();
Console.WriteLine(form1.GetHashCode());
Console.WriteLine(form2.GetHashCode());
你自己定义一个Form对象,不要使用系统默认的Form,那是窗体的基类。
比如你的窗体名字叫testForm吧,你可以在窗体里随便定义一个public int test=0
然后
testForm form1=new testForm();
form1.test=1;
testForm form2=new testForm();
form2.test=2;
form1=form2;
Console.WriteLine(form1.test);
Console.WriteLine(form2.test);
或者你在执行form1=form2之前先GetHashCode()一遍
否则两个一样你凭什么就认为那就都是1而不都是2呢,1到底是几,2到底是几?