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

时间:2015-02-03 12:02:50

标签: c#

说明我有这个:

CustomObject myCO1 = new CustomObject();
CustomObject myCO2 = myCO1;
CustomObject myCO3 = new CustomObject();
myCO1 = myCO3;

我希望myCO2与myCO1具有相同的参考值,与myCO3相同。有没有办法做到这一点?

非常感谢。

2 个答案:

答案 0 :(得分:4)

不,分配新参考只是将参考值复制到新变量中。当您更改它的引用时,引用相同位置的其他变量不会受到影响。

因此,在您的情况下,myCO2会引用myCO1的旧位置。 myCO1myCO3引用了相同的位置。

答案 1 :(得分:2)

听起来有点像你可以在references and values in C#使用引物。具体来说:“如果x是变量且其类型是引用类型,则更改x的 与更改 <中的数据不同em> x的值指的对象

但是,让我稍微清楚地编辑你的例子: -

CustomObject myCO1 = new CustomObject("A");
CustomObject myCO2 = myCO1;
CustomObject myCO3 = new CustomObject("B");
myCO1 = myCO3;

即使您更改myCO1以引用“B”,您也可以清楚地看到myCO2引用“A”。这是因为虽然引用引用到另一个对象,但本身

有很多方法可以达到你想要的结果。

第一个选项是使用引用类型(而不是值)来引用您的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;

您拥有的第二个选项是在方法中封装所需的逻辑并使用{​​{3}}