簡體   English   中英

在一行中實例化 object 屬性

[英]instantiate object property on get in one line

這是一個出於好奇而不是實際需要的問題,但我認為找出答案會很有趣,因為我的類太深了,我需要 10 行實例化來設置一個屬性。

屬性 [MyObj3] 在功能上按我的意願工作,在 get 屬性 function 上,它檢查 object 是否為 null 並實例化它。 而 [MyObj2] 在嘗試引用其屬性時將拋出 null 引用異常。

但是,以這種方式制作每一個屬性是一個比我想要解決的更大的噩夢。 所以這里的問題是是否有一種簡單的內聯方式來處理這個問題。 或者我可能沒有想到的任何其他方式。

-- 更新:我忘了提,我想保留 object null 直到需要它,否則它會包含在 xml 序列化中。

public class Obj1
{
    public Obj2 MyObj2 { get; set; }

    private Obj3 _obj3;
    public Obj3 MyObj3
    {
        get => _obj3 == null ? _obj3 = new Obj3() : _obj3;
        set => _obj3 = value;
    }
}

public class Obj2
{
    public string MyProp1 { get; set; }
}

public class Obj3
{
    public string MyProp1 { get; set; }
}

public void test()
{
    var obj = new Obj1();
    obj.MyObj2.MyProp1 = "test";//null exception
    obj.MyObj3.MyProp1 = "test";//works fine
}

當你像這樣實例化 Obj1 時,你可以實例化 Obj2 和 Obj3

public class Obj1
{
    public Obj2 MyObj2 { get; set; } = new Obj2();
    public Obj3 MyObj3 { get; set; } = new Obj3();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM