在另一个对象中分配和调用对象属性
本文关键字:调用 对象 属性 分配 一个对象 | 更新日期: 2023-09-27 18:04:18
我有一个创建子属性的要求,像下面的对象(突出显示),我想像下面这样一步到位。除了创建单独的对象并将其附加到主对象。
但是没有赋值,请帮忙。
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; }
}
}
几个选项:
-
更改字段初始化项:
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; } }
第三个选项的主要好处是,在检索属性之前,会延迟子项的创建。缺点是带有副作用的getter可能是有问题的。
只是添加到@ DStanley以简化您可以简单地
public Subtest Sub {
get
{
return _sub ?? (_sub = new Subtest());
}
set {
_sub = value;
}
}