最佳重载方法匹配具有一些无效的类构造函数参数(C#)
我得到了这个错误,但不完全确定原因。在一个类中,我使用以下代码行创建了一个对象:最佳重载方法匹配具有一些无效的类构造函数参数(C#),c#,class,constructor,overloading,C#,Class,Constructor,Overloading,我得到了这个错误,但不完全确定原因。在一个类中,我使用以下代码行创建了一个对象: StoreSale sale = new StoreSale(1, 13.99); StoreSale类中的构造函数如下所示: public StoreSale(int quantity, float value) { this.quantity = quantity; this.value = value; } …我得到的错误是“applicationname的最佳重载方法匹配项”。StoreSa
StoreSale sale = new StoreSale(1, 13.99);
StoreSale类中的构造函数如下所示:
public StoreSale(int quantity, float value)
{
this.quantity = quantity;
this.value = value;
}
…我得到的错误是“applicationname的最佳重载方法匹配项”。StoreSale.StoreSale(int,float)有一些无效参数。”
有人能告诉我我做错了什么吗?
13.99
是一个double
。要使其成为float
文本,请添加f
:13.99f
13.99
是双文本。附加一个f
使其成为浮点:13.99f
无论如何,您可能都不想对货币值使用二进制浮点
decimal
是一个更明智的选择。之所以会出现此错误,是因为文本13.99
是double
,并且没有从double
到float
的隐式转换。改用13.99F
StoreSale sale = new StoreSale(1, 13.99F);
由于int quantity=1没有问题,问题显然是13.99的值。代码的第一行看起来不像真正运行时的语句,因为值都是硬编码的。因此,您可以轻松地完成float value=13.99;你自己也看到了这个错误。谢谢,成功了!我不知道十进制数据类型,也不知道有必要在浮点数后面加上一个f。乔伊说得对,你应该用十进制表示货币值。在这种情况下,您还需要使用
13.99m
作为十进制文本。