[.NET] 建构子中传递子对象的对象
在设计对象继承的时候,父对象建构子会需要一些参数,这些参数可以由子对象建构子透过base关键词来提供。
namespace Test001
{public class ParentClass{// Constructorspublic ParentClass(IEnumerable<string> dataCollection){this.DataCollection = dataCollection;}// Propertiespublic IEnumerable<string> DataCollection { get; private set; }}public class ChildClass : ParentClass{// Constructorspublic ChildClass() : base(new List<string>()) { }}
}
但是如果子对象,要使用这个传递给父对象的参数,就需要一点小技巧才能取得了。先来看一开始解决的想法是,先建立子对象的属性对象,然后再传递给父对象。这个方法很快就失败,光是编译就不过了….。对象的建立是先跑建构子、然后生出对象。在建构子的阶段,就要使用对象的属性,一定是失败的。
namespace Test002
{public class ParentClass{// Constructorspublic ParentClass(IEnumerable<string> dataCollection){this.DataCollection = dataCollection;}// Propertiespublic IEnumerable<string> DataCollection { get; private set; }}public class ChildClass : ParentClass{// Fieldsprivate readonly List<string> _dataCollection = new List<string>();// Constructorsprivate ChildClass() : base(_dataCollection) { }}
}
想了一下,换个角度去解决这个问题。干脆另外再开一个子对象的建构子,先建立要传给父对象的对象,然后不直接传给父对象的建构子,而是传给子对象自己的建构子,然后这个建构子在传递给父对象。写到我眼睛都花了,好像绕口令….。直接看程序代码吧,其实还蛮简单就可以完成这个小小的设计:
namespace Test003
{public class ParentClass{// Constructorspublic ParentClass(IEnumerable<string> dataCollection){this.DataCollection = dataCollection;}// Propertiespublic IEnumerable<string> DataCollection { get; private set; }}public class ChildClass : ParentClass{// Fieldsprivate readonly List<string> _dataCollection = null;// Constructorspublic ChildClass() : this(new List<string>()) { }private ChildClass(List<string> dataCollection): base(dataCollection){_dataCollection = dataCollection;}}
}
转载于:https://www.cnblogs.com/clark159/archive/2012/09/15/2686035.html
[.NET] 建构子中传递子对象的对象相关推荐
- 四、CXF WebService中传递复杂类型对象
前面介绍的都是传递简单的字符串,现在开始介绍传递复杂类型的对象.如JavaBean.Array.List.Map等. 1. 首先看看服务器端的代码所需要的JavaBean对象 package com. ...
- 信号发送,槽函数执行,过程中传递的是对象的引用,涉及的拷贝操作
如果qt的信号和槽之间发送的是对象的引用,传递过程中会发生拷贝操作. 一.跨线程之间 #ifndef __MAIN_WINDOW_H_ #define __MAIN_WINDOW_H_#include ...
- Vue 中 props 传值,父组件向子组件传递对象/数组可以直接修改的问题
vue 中父子组件通信最常用的方式是 props 和 $emit,所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行.这 ...
- 父组件访问子组件中的数据(父子组件通信案例:父组件访问子组件$refs[‘子组件‘],子组件传递数据给父组件(父组件中使用v-model))
一.需求 二.在父组件upload-cover中: 通过$refs['子组件的ref属性值']就能拿到子组件对象 三.在子组件imgae-list(相对于父组件upload-cover来说,image ...
- vue 点击事件传递多个参数_Vue子组件监听事件中传递参数的方法
在子组件中,我们可以通过以下方式监听事件: v-on:click="$emit('funcName',a)" 如果需要传多个参数,可以通过以下方式: v-on:click=&quo ...
- vector 作为dll 接口参数_DLL中传递STL参数,vector对象作为dll参数传递等问题(转)...
STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释. 原因分析:一句话-----如果 ...
- java中形参不可以是对象吗_(重要)java都是值传递,与对象形参所指向的对象改变,其实参所指向的对象也相应改变并不矛盾(2011年9.30日一天写的两个程序的总结结果)...
1.0建立二叉树的代码,在java中必须创建二叉树的方法必须用返回值,因为不存在c语言中的引用传递,在java中只有值传递 代码1为正确,代码2(没有使用返回值)为错误.那么为什么之前的例子中将对象作 ...
- python中、变量指向的对象可以发生变化吗_python中的引用传递,可变对象,不可变对象,list注意点...
python中的引用传递 首先必须理解的是,python中一切的传递都是引用(地址),无论是赋值还是函数调用,不存在值传递. 可变对象和不可变对象 python变量保存的是对象的引用,这个引用指向堆内 ...
- Android中传递对象的三种方法
Android中,Activity和Fragment之间传递对象,可以通过将对象序列化并存入Bundle或者Intent中进行传递,也可以将对象转化为JSON字符串,进行传递. 序列化对象可以使用Ja ...
最新文章
- Serendipity解决IE缓存为0
- JVM(3)——Java GC分析
- 文档模型(JSON)使用介绍
- (转)yi_meng linux 下 ifcfg-eth0 配置 以及ifconfig、ifup、ifdown区别
- [kafka]kafka集群实践
- A20 网卡驱动分析
- 更新Android Studio 3.0,你遇到坑了吗?
- 6426C Lab2 部署和配置证书服务
- 有关 this 指向问题总结
- Excel导出当前工作表为PDF文件的操作
- 定义一个矩形类Rectangle
- translate maketrans 方法详解
- jmeter性能测试并监控服务器
- 打印时出现“错误!未找到引用源”“未定义书签”怎么办?
- 现实黑镜 | 面对死亡,你愿意将意识上传 获得“永生”吗?
- 计算机丢失msvc80.dll,msvcr80.dll
- html5绘制图形渐变-径向渐变
- 如何编写firefox插件
- chunk-vendors.js 语法错误
- html的动画属性,css动画属性使用及实例代码(transition/transform/animation)
热门文章
- rstudio运行python_RStudio 1.2发布,改进对Python chunks,R脚本等的测试和支持
- python源码多平台编译_ubuntu编译python源码的坑
- 数学--数论--HDU1222 狼和兔子(最大公约数)
- 哇靠靠,这也行?零基础DIY无人驾驶小车(三)
- 街景图像分割_借助深度学习和街景图像进行城市的大规模树木死亡率研究
- FTP和TFTP的区别与介绍
- 如果信用卡欠款不还被坐牢,那所欠的钱还用还吗?
- 一发工资就全部取出,会对银行流水有影响吗?
- 赫塔•米勒获诺贝尔文学奖说明了什么?
- jquery全局变量_jQuery源码一个小细节,却很好地体现了性能优化的思想,很优秀...