向ParentDetail类添加一个新的构造函数
本文关键字:一个 构造函数 ParentDetail 添加 | 更新日期: 2023-09-27 17:59:48
这是我上一个问题的后续内容。我听取了一位会员的建议,一切都很好。但现在,当我想拥有另一个构造函数时,我遇到了以前没有的问题。这是我现在拥有的:
public class Parent {
public Parent() { this._parentDetails = new List<ParentDetail>(); }
public IList<ParentDetail> ParentDetails { get { return _parentDetails; } }
private List<ParentDetail> _parentDetails; // = new List<ParentDetail>();
public Parent(int count) {
for (int i = 0; i < count; i++) {
ParentDetails.Add(new ParentDetail{
Id = i + 1
} );
}
当我用"Parent(int count)"中的数字调用类时,它将失败,并告诉ParentDetails的实例为null。我必须这样做才能调用默认构造函数吗?还是需要在新构造函数中手动创建ParentDetail的实例?
您可以执行您提到的的这两个选项中的任何一个
我认为调用默认构造函数会好一点,因为你以后可能会向它添加更多的东西,它会自动反映出来,而且它减少了代码的冗余:
public Parent(int count) : this() {
for (int i = 0; i < count; i++) {
ParentDetails.Add(new ParentDetail{
Id = i + 1
}
public Parent(int count):this() {
for (int i = 0; i < count; i++) {
ParentDetails.Add(new ParentDetail{
Id = i + 1
} );
}
public Parent(int count) : this() {
for (int i = 0; i < count; i++) {
ParentDetails.Add(new ParentDetail{
Id = i + 1
} );
}
}
调用new()
将调用默认构造函数。如果要从Parent()
构造函数调用Parent(int count)
构造函数(例如,使用count
的默认值),则可以类似地调用this(1)
。
如果在继承的类中执行此操作,则可以调用base()
。
根据经验,我建议你在一个构造函数中尽可能多地使用所有可能的参数,然后让其他构造函数使用更少的参数并提供默认值,调用它。
例如:
public Parent() : this(5) { }
public Parent(int count) : this() {
this._parentDetails = new List<ParentDetail>();
for (int i = 0; i < count; i++) {
ParentDetails.Add(new ParentDetail{
Id = i + 1
} );
}
}