C# 错误:父类不包含接受0个参数的构造函数

C# 错误:父类不包含接受0个参数的构造函数,c#,C#,最初,我收到一个错误,无法在coffee类“coffee”中命名“\u coffee”,因为成员名称不能与其封闭类型相同。当我将名称更改为_coffee时,我收到一个错误,即“coffeeShop不包含接受0个参数的构造函数”。我已在线找到解决方案,但它们似乎不适用于我的应用程序,也不适用于我的应用程序。请帮忙 public class coffeeShop { string _size; string _type; public coffeeShop(string si

最初,我收到一个错误,无法在coffee类“coffee”中命名“\u coffee”,因为成员名称不能与其封闭类型相同。当我将名称更改为_coffee时,我收到一个错误,即“coffeeShop不包含接受0个参数的构造函数”。我已在线找到解决方案,但它们似乎不适用于我的应用程序,也不适用于我的应用程序。请帮忙

public class coffeeShop
{
    string _size;
    string _type;
    public coffeeShop(string size, string type)
    {
        _size = size;
        _type = type;
                }
    public override string ToString()
    {
        return String.Format("Thanks for ordering: {0}, {1}", _size, _type);
    }
}
class Coffee : coffeeShop
{
    string _size;
    string _type;
    string _caffiene;
    public virtual void _Coffee( string size, string type, string caffiene)
{
    _caffiene = caffiene;
    _size = size;
    _type = type;
}
    public override string ToString()
    {
        return String.Format("Product Information for: {0} {1} {3}", _size, _type, _caffiene);
    }
}
改变

或者加上

public coffeeShop()
{
}
它将在基类中定义一个无参数构造函数

请注意,您正在重新定义大小和类型,将构造函数更改为

public Coffee(string size, string type, string caffiene)
   : base(size, type)
{
    _caffiene = caffiene;
}
Coffee
类中删除
\u size
\u type
,并在基类(
coffeeShop
)中将其声明为
受保护的

更改

public virtual void _Coffee( string size, string type, string caffiene)
{
    _caffiene = caffiene;
    _size = size;
    _type = type;
}

或者加上

public coffeeShop()
{
}
它将在基类中定义一个无参数构造函数

请注意,您正在重新定义大小和类型,将构造函数更改为

public Coffee(string size, string type, string caffiene)
   : base(size, type)
{
    _caffiene = caffiene;
}
Coffee
类中删除
\u size
\u type
,并在基类(
coffeeShop
)中将它们声明为
受保护的

如果在您的类型中未定义构造函数,C编译器将发出默认(无参数)构造函数。这就是它试图为您的Coffee类所做的(默认情况下,它在基类中寻找一个无参数的构造函数来调用),但是您的基类(coffeeShop)只定义了一个接受2个参数的构造函数

因此,任何子类都需要通过
base
关键字显式调用此构造函数:

public Coffee(string size, string type, string caffiene) : base(size, type)
{
  _caffiene = caffiene;
}
如果您的类型中没有定义构造函数,C#编译器将发出一个默认(无参数)构造函数。这就是它试图为您的Coffee类所做的(默认情况下,它在基类中寻找一个无参数的构造函数来调用),但是您的基类(coffeeShop)只定义了一个接受2个参数的构造函数

因此,任何子类都需要通过
base
关键字显式调用此构造函数:

public Coffee(string size, string type, string caffiene) : base(size, type)
{
  _caffiene = caffiene;
}

写这个:
public Coffee(字符串大小、字符串类型、字符串类型):base(大小、类型){{u caffine=caffine;}
应该注意的是,这种继承层次结构没有多大意义。咖啡馆不是咖啡馆。你的班级等级制度毫无意义。你应该使用继承来表示“是”关系,但咖啡不是咖啡店的类型。这种关系更像是“有”,即咖啡店有咖啡。您可以通过将coffeeShop类中的coffee作为字段/属性来表示这一点。编写以下内容:
public coffee(字符串大小、字符串类型、字符串类型):base(大小、类型){{u caffine=caffine;}
应该注意,这种继承层次结构没有多大意义。咖啡馆不是咖啡馆。你的班级等级制度毫无意义。您应该为“是a”关系使用继承,但咖啡不是咖啡店的一种类型。这种关系更像是“有”,即咖啡店有咖啡。通过将coffeeShop类中的coffee作为字段/属性来表示这一点。哇,从虚拟方法is wired调用基构造函数。哇,从虚拟方法is wired调用基构造函数。