主页 > 知识库 > 基于.NET中建构子中传递子对象的对象详解

基于.NET中建构子中传递子对象的对象详解

热门标签:银行业务 Linux服务器 电子围栏 团购网站 Mysql连接数设置 服务器配置 科大讯飞语音识别系统 阿里云
在设计对象继承的时候,父对象建构子会需要一些参数,这些参数可以由子对象建构子透过base关键词来提供。
复制代码 代码如下:

namespace Test001
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerablestring> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerablestring> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Constructors
        public ChildClass() : base(new Liststring>()) { }
    }
}

但是如果子对象,要使用这个传递给父对象的参数,就需要一点小技巧才能取得了。先来看一开始解决的想法是,先建立子对象的属性对象,然后再传递给父对象。这个方法很快就失败,光是编译就不过了….。对象的建立是先跑建构子、然后生出对象。在建构子的阶段,就要使用对象的属性,一定是失败的。
复制代码 代码如下:

namespace Test002
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerablestring> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerablestring> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Fields
        private readonly Liststring> _dataCollection = new Liststring>();

 
        // Constructors
        private ChildClass() : base(_dataCollection) { }
    }
}

想了一下,换个角度去解决这个问题。干脆另外再开一个子对象的建构子,先建立要传给父对象的对象,然后不直接传给父对象的建构子,而是传给子对象自己的建构子,然后这个建构子在传递给父对象。写到我眼睛都花了,好像绕口令….。直接看程序代码吧,其实还蛮简单就可以完成这个小小的设计:

复制代码 代码如下:

namespace Test003
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerablestring> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerablestring> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Fields
        private readonly Liststring> _dataCollection = null;

 
        // Constructors
        public ChildClass() : this(new Liststring>()) { }

        private ChildClass(Liststring> dataCollection)
            : base(dataCollection)
        {
            _dataCollection = dataCollection;
        }
    }
}

标签:枣庄 广元 江苏 蚌埠 萍乡 大理 衢州 衡水

巨人网络通讯声明:本文标题《基于.NET中建构子中传递子对象的对象详解》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266