[英]How do I call both this and base constructor
我该如何称呼它和基本构造函数? 可以打电话吗?
我要编写的代码是这样
public class ObservableTestCollection<T> : ObservableCollection<T>
{
public T Parent;
public ObservableTestCollection(T parent)
{
Parent = parent;
}
public ObservableTestCollection(T parent, IEnumerable<T> source): base(source) ,this(parent)
{
}
}
我该如何称呼它和基本构造函数? 可以打电话吗?
您不能像示例中那样调用此基类构造函数。
为了实现您在示例中尝试做的事情,您将必须像这样重构它。
public class ObservableTestCollection<T> : ObservableCollection<T> {
public T Parent;
//This constructor calls the instance constructor
public ObservableTestCollection(T parent) : this(parent, Enumerable.Empty<T>()) {
}
//Instance constructor is calling the base constructor
public ObservableTestCollection(T parent, IEnumerable<T> source) : base(source) {
Parent = parent;
}
}
第二个构造函数用于填充局部变量并调用基本构造函数。 让我们将该构造函数称为实例构造函数 。 现在,其他构造函数可以使用this
关键字来调用实例构造函数。
一个构造函数可以使用this关键字在同一对象中调用另一个构造函数。 与base一样, 它可以使用或不使用参数,并且构造函数中的任何参数都可以用作此参数或作为表达式的一部分。
语言不允许这样做。 您需要从两个构造函数中提取通用代码到方法,然后从两个构造函数中调用它。 这样,您的代码将不会被重复使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.