gpt4 book ai didi

c# - 为什么要调用父级的构造函数?

转载 作者:太空狗 更新时间:2023-10-29 23:59:07 27 4
gpt4 key购买 nike

我有一个抽象类示例。另一个通用类 UsesExample 使用它作为约束,带有 new() 约束。后来,我为 Example 类创建了一个子类 ExampleChild,并将其与泛型类一起使用。但是不知何故,当泛型类中的代码试图创建新副本时,它调用的不是子类中的构造函数,而是父类中的构造函数。为什么会这样?这是代码:

abstract class Example {

public Example() {
throw new NotImplementedException ("You must implement it in the subclass!");
}

}

class ExampleChild : Example {

public ExampleChild() {
// here's the code that I want to be invoken
}

}

class UsesExample<T> where T : Example, new() {

public doStuff() {
new T();
}

}

class MainClass {

public static void Main(string[] args) {

UsesExample<ExampleChild> worker = new UsesExample<ExampleChild>();
worker.doStuff();

}

}

最佳答案

当你创建一个对象时,所有的构造函数都会被调用。首先,基类构造函数构造对象,以便初始化基类成员。稍后调用层次结构中的其他构造函数。

此初始化可能会调用静态函数,因此如果它没有数据成员,则调用抽象基类事件的构造函数是有意义的。

关于c# - 为什么要调用父级的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com