[英]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.