无为清净楼资源网 Design By www.qnjia.com
在设计对象继承的时候,父对象建构子会需要一些参数,这些参数可以由子对象建构子透过base关键词来提供。
复制代码 代码如下:
namespace Test001
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerable<string> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerable<string> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Constructors
        public ChildClass() : base(new List<string>()) { }
    }
}

但是如果子对象,要使用这个传递给父对象的参数,就需要一点小技巧才能取得了。先来看一开始解决的想法是,先建立子对象的属性对象,然后再传递给父对象。这个方法很快就失败,光是编译就不过了….。对象的建立是先跑建构子、然后生出对象。在建构子的阶段,就要使用对象的属性,一定是失败的。
复制代码 代码如下:
namespace Test002
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerable<string> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerable<string> DataCollection { get; private set; }
    }

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

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

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

想了一下,换个角度去解决这个问题。干脆另外再开一个子对象的建构子,先建立要传给父对象的对象,然后不直接传给父对象的建构子,而是传给子对象自己的建构子,然后这个建构子在传递给父对象。写到我眼睛都花了,好像绕口令….。直接看程序代码吧,其实还蛮简单就可以完成这个小小的设计:
复制代码 代码如下:
namespace Test003
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerable<string> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerable<string> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Fields
        private readonly List<string> _dataCollection = null;

 
        // Constructors
        public ChildClass() : this(new List<string>()) { }

        private ChildClass(List<string> dataCollection)
            : base(dataCollection)
        {
            _dataCollection = dataCollection;
        }
    }
}

标签:
.net,建构子中传递,子对象

无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。