在不使用后备字段的情况下,如何在首次访问时实例化属性?

时间:2018-06-20 11:38:57

标签: c#

在类中有一个对象属性,在首次访问该属性之前,我不希望创建该对象。我可以使用以下代码来实现:

private XObject _myObject;
public XObject MyObject
{
    get
    {
        if (_myObject == null)
            _myObject = new XObject(this);

        return _myObject;
    }
}

这又可以重构为:

private XObject _myObject;
public XObject MyObject { get => _myObject ?? (_myObject = new XObject(this)); }

但是在不使用背景字段的情况下也可以达到相同的结果吗?

我不能使用Lazy<T>,因为'this'是作为参数传递的。

0 个答案:

没有答案