簡體   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