将一个对象分配给同一个类的另一个对象

Jac*_*cik 2 .net c# variables scope instance

请看下面的代码:

class Parent{}

class Child : Parent
{
    public int field 
    {
        get; 
        set;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Child child1 = new Child();
        Child child2 = child1;              //same memory address?

        child1.field = 12;
        child2.field = 14;

        Console.WriteLine(child1.field);    //14, as expected

        child1 = null;
        Console.WriteLine(child2.field);    //expected to crush: 'child1' is null so expected 'child2' to also be null

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这段代码崩溃,但事实并非如此.

为什么?

D S*_*ley 6

这不是参考工作的方式.

Child child1 = new Child();
Run Code Online (Sandbox Code Playgroud)

创建对新对象的引用Child

Child child2 = child1;  
Run Code Online (Sandbox Code Playgroud)

创建另一个指向同一对象的参考child1

child1 = null;
Run Code Online (Sandbox Code Playgroud)

child1 引用设置为null(它不再指向任何内容).它不会更改它指向的对象,也不会影响它child2. child2仍然指向它以前做过的同一个对象.