C#参考指针
我希望C#参考指针,c#,C#,我希望c2对象将更新其class1引用,因为它是通过引用传递的,所以该引用已更新,但仍然为空 当设置c2.class1=c1且c1当前为空时,它是否保留值null,并且不使用指向空内存空间的指针?在c1=new class1()之后该c1指向您的类1的一个新实例。 c1中的旧引用替换为新引用,指向该新实例 您以前使用c1的旧值来设置c2.class1,现在不会被记住。c2.class1保留其旧值。您的代码所做的是创建c1变量的副本,并将其存储在c2.class1。然后,当您更新c1并将其设置为n
c2
对象将更新其class1
引用,因为它是通过引用传递的,所以该引用已更新,但仍然为空
当设置c2.class1=c1且c1当前为空时,它是否保留值
null
,并且不使用指向空内存空间的指针?在c1=new class1()之后
该c1
指向您的类1的一个新实例。
c1中的旧引用替换为新引用,指向该新实例
您以前使用c1的旧值来设置
c2.class1
,现在不会被记住。c2.class1保留其旧值。您的代码所做的是创建c1
变量的副本,并将其存储在c2.class1
。然后,当您更新c1
并将其设置为newclass1()代码>,您根本不会影响c2.class1。您需要执行c2.class1=new class1()代码>执行此操作。通过运行代码并查看它的功能来回答您的问题?运行代码时,发生了什么?'C1'和'c2.class1'是两个独立的引用。它们不需要引用同一个对象,更改一个对象不会更改另一个对象。
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
}
}