C# 将一个指向引用类型的变量赋值给另一个变量,后一个变量中存储的是什么?

C# Assigning a variable pointing to a reference type to another variable, what is stored in the latter variable?

我想了解将已经存储了对对象实例 MyClass 的引用的变量 a 分配给新变量 b 时会发生什么。 例如

    var a = new MyClass("some name"); 
    //assume instance has an address 1, var a's address is 2 and the value is the address of object instance(1). 
    var b = a;

我以为b中存储的值是a的地址,也就是2,结果输出b的值时,结果好像是1。 例如

    setName(ref a, "NEW NAME");
    public void setName (ref MyClass instance, string name)
    {
        instance = new MyClass(name)
    }
    Console.WriteLine(a.Name);
    Console.WriteLine(b.Name);

输出为

NEW NAME   //a.Name
some name  //b.Name

我原以为两个变量的名称都会更改,因为我认为 b 正在存储指向 a 的指针。但似乎 b 正在存储 a 的值而不是它的地址?

提前致谢

(original answer试图用指针的术语来解释,然而,这似乎过于复杂了)

调用 setName(ref a, "NEW NAME") 在功能上等同于内联 setName() 的主体,其中 instance 替换为 a:

var a = new MyClass("some name"); 
var b = a;
a = new MyClass("NEW NAME");
Console.WriteLine(a.Name);
Console.WriteLine(b.Name);

现在很清楚 b.Name 的值在这种情况下没有理由改变。添加函数 setName() 其中 a 通过引用传递对 b.

的结果没有影响