如何调用this和base构造函数?可以打电话吗?
我想做的代码就是这个
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)
{
}
}
答案 0 :(得分:4)
如何调用this和base构造函数?可以打电话吗?
你不能像你的例子那样调用this和base构造函数。
要实现您在示例中尝试做的事情,您将不得不像这样重构它。
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
关键字由其他构造函数调用实例构造函数。
<强> Using Constructors (C# Programming Guide) 强>
构造函数可以通过调用同一对象中的另一个构造函数 使用此关键字。与 base 一样,此可以使用或不使用 参数和构造函数中的任何参数都可用 参数,或作为表达式的一部分。
答案 1 :(得分:0)
语言不允许这样做。您需要从构造函数中提取公共代码到方法,并从两个构造函数中调用它。这样你的代码就不会被怀疑了。