【问题标题】:no overload for method 'METHOD' takes 0 arguments方法'METHOD'没有重载需要0个参数
【发布时间】:2012-06-13 17:17:20
【问题描述】:

我有 3 种方法。

1 方法持有 3000 的值 1个方法持有0.13的值

我已经创建了另一种方法,我想将这两个数字相乘。

public override int FishPerTank()
{                
    return 3000;                
}

public override double WeightOut(double weightOut, double weightIn)
{
    return 0.13;
}

public override int HowMuchTheFishWeighOutKG()
{
    return (FishPerTank() * WeightOut());
}

我在这里收到有关 WeightOut 的语法错误:

public override int HowMuchTheFishWeighOutKG()
{
    return (FishPerTank() * WeightOut());
}

【问题讨论】:

  • @ClaudioRedi 是正确的。另外,请注意您乘以双精度 (WeightOut),然后返回一个整数。您会丢失小数位(不确定这是否是您想要的结果)。
  • 出于好奇....你为什么要使用覆盖。这些特定方法是否作为虚拟方法存在于某些基类中,因此需要使用您的类的自定义版本来覆盖它们?
  • @JasonDown - 他不会达到失去精度的地步。他会得到一个编译错误,因为没有从 double 到 int 的隐式转换。
  • @hatchet:是的,你是对的......隐式转换反过来存在。我想是时候喝杯咖啡了……

标签: c# winforms overloading


【解决方案1】:

WeightOut 需要 2 个参数,但您没有提供它们

【讨论】:

    【解决方案2】:

    WeightOut(double weightOut, double weightIn) 声明了两个参数,而您没有调用它。因此错误。

    【讨论】:

      【解决方案3】:
      WeightOut()  
      

      需要两个参数。但为什么 ?你不使用它们。

      在没有 2 个参数的情况下重写您的方法

      public double WeightOut()
      {
         return 0.13;
      }
      

      【讨论】:

      • 我在基类中使用 2 个参数,因为它在那里进行计算。
      • 在这种情况下你必须使用这两个参数,当你调用方法时你必须传递它们。此外,如果您想重用基类的代码,您必须将其命名为base.WeightOut(parameter1, parameter2)
      【解决方案4】:

      你可能想要改变

      public override double WeightOut(double weightOut, double weightIn)
      {
          return 0.13;
      }
      

      public override double WeightOut()
      {
          return 0.13;
      }
      

      因为你没有使用参数。

      还有为什么要覆盖?如果删除参数导致另一个语法错误,可能需要删除它,或者在基类中修复它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多