赋值“=”引用变量与实例

这个为什么不论是 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的那个实例 是不准确的。
建议自行检查。

对象气球理论_鲲鹏化羽-CSDN博客 我们将对象比作充满氢气的气球,将引用比作连着气球的绳子1)一根绳子同一时间只能连着一个气球,就如同一个引用同时只能指向一个对象。   Student s1 = new Student();   s1目前就指向一个Student对象2)一个气球可以被多根绳子连着,就如同一个对象同时可以被多个引用指向。   Student s2 = s1;   此时,s1和s2都指向同 https://blog.csdn.net/kunpeng_mubao/article/details/8244970

两个都指向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到底是几?