1

最初我收到一个错误,我无法在咖啡类“Coffee”中命名“_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);
    }
}
4

2 回答 2

5

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

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

public Coffee(string size, string type, string caffiene) : base(size, type)
{
  _caffiene = caffiene;
}
于 2013-04-03T16:23:08.587 回答
2

改变

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

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

或者添加

public coffeeShop()
{
}

这将在基类中定义一个无参数的构造函数

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

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

从类中删除_sizeand并将它们声明为基类 ( )_typeCoffeeprotectedcoffeeShop

于 2013-04-03T16:22:40.650 回答