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;