C#参考指针

时间:2019-05-14 15:43:32

标签: c#

using System;

public class Class1 {
     public int A {get;set;}    
}

public class Class2 {
    public Class1 class1 {get;set;} 
}

public class Test
{
    public static void Main()
    {
        Class1 c1 = null;
        var c2 = new Class2();
        c2.class1 = c1;

        c1 = new Class1();
        c1.A = 1;

        Console.WriteLine(c2.class1.A); //Expect 1 not NULL ref err
    }
}

我希望c2对象将更新其class1引用,因为它是通过引用传递的,因此该引用已更新,但它保持为空。

当您设置c2.class1 = c1并且c1当前为空时,它是否保留值null并且不使用指向空内存空间的指针?

1 个答案:

答案 0 :(得分:0)

c1 = new Class1();之后,c1指向Class1的 new 实例。 将c1中的旧引用替换为对该新实例的新引用。

您以前使用过c1的旧值来设置c2.class1的情况不会被记住。 c2.class1保持其旧值。