繁体   English   中英

我怎么称呼这个和基本构造函数

[英]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关键字来调用实例构造函数。

使用构造函数(C#编程指南)

一个构造函数可以使用this关键字在同一对象中调用另一个构造函数。 base一样, 可以使用或不使用参数,并且构造函数中的任何参数都可以用作此参数或作为表达式的一部分。

语言不允许这样做。 您需要从两个构造函数中提取通用代码到方法,然后从两个构造函数中调用它。 这样,您的代码将不会被重复使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM