【问题标题】:The best overloaded method match has some invalid arguments for a class constructor (C#)最佳重载方法匹配对类构造函数 (C#) 有一些无效参数
【发布时间】:2015-11-05 20:04:06
【问题描述】:

我收到此错误,但不完全确定原因。在一个类中,我使用以下代码行创建了一个对象:

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) 有一些无效参数。”

谁能告诉我我做错了什么?

【问题讨论】:

  • 既然int数量=1没有问题,那么问题显然出在13.99的值上。代码的第一行看起来不像是真正运行时的语句,因为这些值都是硬编码的。因此,您可以轻松完成 float value = 13.99;并且亲眼看到了这个错误。

标签: c# class constructor overloading


【解决方案1】:

13.99 是一个 double 文字。附加一个f 使其变为浮点数:13.99f

无论如何,您可能都不想将二进制浮点用于货币值。 decimal 是一个更明智的选择。

【讨论】:

  • 谢谢,成功了!不知道十进制数据类型或将 f 附加到浮点数的必要性。
  • Joey 是正确的,您应该使用小数来表示货币值。在这种情况下,您还需要将 13.99m 用于十进制文字。
【解决方案2】:

13.99double。要使其成为 float 文字,请添加 f: 13.99f

【讨论】:

    【解决方案3】:

    您收到此错误是因为文字 13.99double,并且没有从 doublefloat 的隐式转换。请改用13.99F

    StoreSale sale = new StoreSale(1, 13.99F);
    

    【讨论】:

      猜你喜欢
      • 2014-05-17
      • 2014-04-14
      • 2015-10-14
      • 2018-07-14
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多