[英]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.