[英]In C#, how can I return what a property of an object refers to?
让我解释一下我的意思。 说我有一个对象
public class Foo
{
public int Val { get; set; }
}
另一个喜欢
public class Bar
{
public Foo Reference { get; set; }
}
假设我有
Bar mybar = new Bar() { Reference = new Foo() { Val = 69 } }
我想暂时设置
mybar.Reference = null;
然后将其设置回以前的状态。 嗯,我做不到
var temp = mybar.Reference;
mybar.Reference = null;
mybar.Reference = temp;
因为上面的第 2 行将temp
设置为null
。 那么我该如何做我想做的事呢?
不,你可以做到,而且会奏效。
引用类型,就像你的Foo
,只包含对实际对象的“引用”。 因此,属性Bar.Reference
包含指向Foo
实际对象的内存地址。
您的代码:
var temp = mybar.Reference;
上面的代码将“内存地址/引用”复制到变量temp
。
现在temp
和mybar.Reference
指向内存中的同一个对象。
mybar.Reference = null;
上面的代码将变量mybar.Reference
设置为null
,现在mybar.Reference
指向“无处”,但请注意,该temp
仍然具有对原始对象的引用。
mybar.Reference = temp;
最后一行将“内存地址”从temp
复制回mybar.Reference
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.