• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于.NET中建构子中传递子对象的对象详解
    在设计对象继承的时候,父对象建构子会需要一些参数,这些参数可以由子对象建构子透过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中应用程序内共享UdpClient联机的实现方法
    下一篇:.NET中STAThread的使用详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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