是否可以在没有构造函数的情况下设置派生类的默认值?

时间:2017-11-20 17:08:26

标签: c#

我的目标是使用基类的成员变量和抽象方法创建一个不会改变的静态对象,因为这些类型的对象会有多种。

这是我想要做的一个例子:

public abstract class BaseThing
{
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Cost { get; set;}

    public abstract void MethodThatDoesThings();
}

然后我想要一个派生对象,它具有这些基本变量的默认值,就像这样(显然不起作用):

public class DerivedThing : BaseThing
{
    Name = "Name1";
    Description = "Description1";
    Cost = 1.00;

    public override void MethodThatDoesThings()
    {
        //Actually does things
    }
}

如果不使用构造函数,这样的事情是否可行?并不是说我反对使用它们,我只是真的很好奇。现在我觉得我唯一的选择是创建许多具有相同属性的静态类。

1 个答案:

答案 0 :(得分:1)

不,您应该为派生类实现一个构造函数来设置默认值。如果要设置默认值,可以这样做;

public class DerivedThing : BaseThing
{
    public DerivedThing(string name = "Name", string description = "Description1", decimal cost = 1.0)
    {
        Name = name;
        Description = description;
        Cost = cost;
    }
    public override void MethodThatDoesThings()
    {

    }
}