在另一个对象中分配和调用对象属性

本文关键字:调用 对象 属性 分配 一个对象 | 更新日期: 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; 
}

}