首页 > 编程 > .NET > 正文

基于.NET中建构子中传递子对象的对象详解_.Net教程

2024-07-10 12:52:31
字体:
来源:转载
供稿:网友

推荐:.NET中STAThread的使用详解
这个STA线程模型,在线程内加入了讯息帮浦等等机制,减少开发人员撰写窗口程序的工作量

在设计对象继承的时候,父对象建构子会需要一些参数,这些参数可以由子对象建构子透过base关键词来提供。
复制代码 代码如下:www.CuoXIn.com

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>()) { }
}
}

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

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) { }
}
}

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

复制代码 代码如下:www.CuoXIn.com

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中RDLC循环处理数据的应用分析
本篇文章介绍了,.NET中RDLC循环处理数据的应用分析。需要的朋友参考下

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表