繁体   English   中英

在 C# 中,如何返回对象的属性所指的内容?

[英]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
现在tempmybar.Reference指向内存中的同一个对象。

mybar.Reference = null;

上面的代码将变量mybar.Reference设置为null ,现在mybar.Reference指向“无处”,但请注意,该temp仍然具有对原始对象的引用。

mybar.Reference = temp;

最后一行将“内存地址”从temp复制回mybar.Reference

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM