最佳重载方法匹配具有一些无效的类构造函数参数(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
作为十进制文本。