C# ti是否可以为两个变量设置相同的引用?

C# ti是否可以为两个变量设置相同的引用?,c#,C#,但愿我有这个: CustomObject myCO1 = new CustomObject(); CustomObject myCO2 = myCO1; CustomObject myCO3 = new CustomObject(); myCO1 = myCO3; 我希望myCO2与myCO1具有相同的引用,即myCO3。有办法吗 非常感谢。不,分配一个新引用只会将引用值复制到新变量中。更改其引用时,引用同一位置的其他变量不受影响 所以在你的例子中,myc2引用了myc1的旧位置。myc1和m

但愿我有这个:

CustomObject myCO1 = new CustomObject();
CustomObject myCO2 = myCO1;
CustomObject myCO3 = new CustomObject();
myCO1 = myCO3;
我希望myCO2与myCO1具有相同的引用,即myCO3。有办法吗


非常感谢。

不,分配一个新引用只会将引用值复制到新变量中。更改其引用时,引用同一位置的其他变量不受影响


所以在你的例子中,myc2引用了myc1的旧位置。myc1和myc3引用的是同一个位置。

听起来有点像你可以在上面使用引物。具体地说:如果x是一个变量,其类型是一个引用类型,那么更改x的值与更改x的值所引用的对象中的数据是不同的

但是,为了更清楚,让我编辑一下您的示例:-

CustomObject myCO1 = new CustomObject("A");
CustomObject myCO2 = myCO1;
CustomObject myCO3 = new CustomObject("B");
myCO1 = myCO3;
您可以清楚地看到,myc2引用了A,甚至在您将myc1更改为引用B之后也是如此。这是因为,当引用引用引用另一个对象时,它本身就是一个值

有两种方法可以实现你想要的结果

第一个选项是使用引用类型而不是值来引用CustomObject:-


第二个选项是将所需的逻辑封装在方法中,并使用

如果只使用一个引用,为什么还要这样做?我想在对话框中,我希望有一个结果变量,当在对话框上修改时,结果被传输到调用对话框的视图模型。@阿尔瓦罗加西亚对于这种情况,您可能应该尝试另一种方法。您可以在对话框上公开视图模型可以绑定到的结果属性,或者尝试向将结果作为属性保存的对话框发送包装器对象?
public sealed class Reference<T>
{
  public T Value { get; set; }
}

...

Reference<CustomObject> myCO1 = new Reference<CustomObject>()
                                {
                                  Value = new CustomObject("A");
                                };
Reference<CustomObject> myCO2 = myCO1;

CustomObject myCO3 = new CustomObject("B");
myCO1.Value = myCO3;