gpt4 book ai didi

c# - 在抽象类中有一个构造函数好吗?

转载 作者:可可西里 更新时间:2023-11-01 08:59:51 25 4
gpt4 key购买 nike

在抽象类中有一个构造函数好吗?

创建抽象类的构造函数是一个好的编程习惯吗?由于抽象类不能被初始化,所以他们的子类被初始化。

以下是我的类结构。

public abstract class Scheduler
{
private Storyboard timer;

protected Scheduler()
{
// initialize the timer here.
timer = new Storyboard();

this.PollInterval = 60;
}
}


public class TaskScheduler : Scheduler
{
public TaskScheduler()
: base()
{

}
}

最佳答案

是的,绝对没问题。仅仅因为构造函数只能被派生类调用并不意味着它没有用。例如,您可能有一个代表某种命名实体的抽象类 - 将名称作为构造函数参数是有意义的。

保护构造函数可能是值得的,这样更明显地表明您不能只从其他地方调用它。

请注意,抽象类中有一个构造函数(或多个构造函数)确实强制派生类构造函数通过它,但它不会强制派生类类具有相同的构造函数签名。例如:

public abstract class NamedFoo
{
private readonly string name;
public string Name { get { return name; } }

protected NamedFoo(string name)
{
this.name = name;
}
}

public class DerivedFooWithConstantName
{
public DerivedFooWithConstantName() : base("constant name")
{
}
}

在这种情况下,派生类构造函数正在“删除”一个参数(通过提供一个常量值作为抽象类构造函数的参数),但在其他情况下,它可以“添加”它需要的参数,或者混合使用。

关于c# - 在抽象类中有一个构造函数好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116981/

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