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

时间:2014-05-19 18:22:10

标签: c# class properties instance getter-setter

我需要在下面的对象(突出显示)中创建子属性, 我想像以下一样去做。除了创建单独的对象并将其附加到主对象之外。

但是没有分配价值,请帮忙。

   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; }
              }
            }

2 个答案:

答案 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; 
}

}