我试图更好地理解C#中构造函数的链接,我遇到了以下问题。
class Item
{
private string _name;
private string _category;
private int _sku;
private double _price;
// default values
public Item()
{
_name = "";
_category = "Sale Item";
_sku = 123;
_price = 1.99;
}
public Item(string name, double price) : this()
{
this._name = name;
this._price = price;
}
public Item(string name, string category, int sku, double price)
{
this._name = name;
this._category = category;
this._sku = sku;
this._price = price;
}
public string Name
{
get { return this._name; }
}
public string Category
{
get { return this._category; }
}
public int SKU
{
get { return this._sku; }
public double Price
{
get { return this._price; }
}
}
我的想法是使用无参数构造函数来设置默认值,并使用参数化构造函数来仅更改那些需要更新的值。
不幸的是,这不起作用。代码无法编译。错误消息是1729:没有构造函数接受2个参数。我意识到这不是构造函数通常被链接的方式,但是我不明白为什么这会无法编译,因为在调用第二个构造函数Item(字符串名称,双倍价格)之前首先调用无参数构造函数Item()。
非常感谢任何见解和意见。
答案 0 :(得分:1)
链接构造函数本身没有任何问题,您获得的错误与其他代码相关,其中使用2个特定的参数进行实例化,这些参数不是特定的构造函数。
您需要添加另一个与该签名匹配的参数构造函数来修复该错误。