我需要在下面的对象(突出显示)中创建子属性, 我想像以下一样去做。除了创建单独的对象并将其附加到主对象之外。
但是没有分配价值,请帮忙。
Test oTest=new oTest();
oTest.Prop1=100;
***oTest.Sub.SubProp3="10";***
类定义如下,
public class Test
{
public int Prop1{ get; set; }
public int Prop2{ get; set; }
private Subtest _sub = null;
public Subtest Sub {
get
{
return (_sub != null) ? _sub : new Subtest();
}
set {
_sub = value;
}
}
}
public class Subtest
{
public int SubProp1{ get; set; }
public int SubProp2{ get; set; }
private string _SubProp3;
public string SubProp3
{
get { return _SubProp3; }
set { _SubProp3= value; }
}
}
答案 0 :(得分:4)
几个选项:
更改字段初始值设定项:
private Subtest _sub = new Subtest();
在构造时设置新值:
public Test()
{
_sub = new Subtest();
}
获取时设置新值:
public Subtest Sub {
get
{
if(_sub == null)
_sub = new Subtest();
return _sub;
}
set {
_sub = value;
}
}
第三个选项的主要好处是子项的创建被延迟,直到检索到属性。缺点是具有副作用的吸气剂可能存在问题。
答案 1 :(得分:0)
只需添加到@DStanley即可简化
public Subtest Sub {
get
{
return _sub ?? (_sub = new Subtest());
}
set {
_sub = value;
}
}