Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#参考指针_C# - Fatal编程技术网

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
    }
}