.net如何管理内存参考共享?

Nee*_*pta -2 .net c# reference

我有一个有一个属性的班级

public class Test 
{
  public string Name { get; set; }  
}

private void TestReference()
{
    Test tst1 = new Test();
    tst1.Name = "ASP.NET";
    Test tst2 = tst1;
    tst1.Name = "JAVA";
    string name = tst2.Name; // Shows "JAVA" because of reference sharing 

    tst1 = null;

    bool isNullObj = tst2 == null; // isNullObj is false 
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,当我设置tst.Name = "JAVA"此更改时也tst2.Name因为引用共享而反映出来 ,这个我理解但是当我设置时tst = null; tst2仍然活着.我的问题是,如果是分享参考!为什么tst2还活着?

Ser*_*kiy 7

tst1并且tst2是保存对内存中对象的引用的变量.如果两者都指向同一个对象,则可以通过任何引用更改对象.

如果您重新引用其中一个变量,则另一个变量仍将保留其引用.这就是设置tst1null(或任何其他值)不影响的原因tst2.

这就是你在记忆中所拥有的:

在此输入图像描述