-1

方法 'WeightOut' 没有重载需要 2 个参数

在我对其进行调整以提高效率之前,我的代码正在运行。

这是工作代码:

在 BASE 类中,我有:

public virtual double WeightOut(double weightOut, double wightIn)
        {
            return Math.Round((weightOut = (weightIn + 0.12)), 2);
        }

然后在继承类中我有:

public override double WeightOut(double weightOut, double weightIn)
        {
            return Math.Round((this.WeightIn() + 0.12), 2);
        }

然后我更改了它,以便我不在两个类中使用相同的代码,而只在继承的类中使用:

在 BASE 类中:

public abstract double WeightOut();

在继承类中:

public override double WeightOut()
        {
            return Math.Round((this.WeightIn() + 0.12), 2);
        }

然后,在使用同一 INHERTIED 类中的 WeightOut() 方法导致的这行代码进行编译时,我得到了语法错误:

public override double HowMuchTheFishWeighOutKG()
        {
            return this.FishPerTank() * this.WeightOut(0, 0) * this.Tanks();
        }

所以我将其更改为:

public override double HowMuchTheFishWeighOutKG()
        {
            return this.FishPerTank() * this.WeightOut() * this.Tanks();
        }

语法错误仍然存​​在:

方法 'WeightOut' 没有重载需要 2 个参数。

(另一个小问题)它告诉我错误在哪里:37,59,但 Visual Studio 没有告诉我那在哪里,我必须自己数数才能找到它在哪里。

4

1 回答 1

0

我要检查的几件事:在基类中,您确定 WeightOut 的抽象方法没有参数。发出的投诉可能与继承的函数定义不匹配有关。

第二件事要检查,右键单击 Inherited Classes "WeightOut" 函数(具体的函数名称)并选择选项Find All References。这应该为您提供代码中每个位置的列表,按类名/文件名和行号,调用此函数。这可能会有所帮助。

注意:如果您没有该选项,请详细说明您使用的是哪个版本的 Visual Studio?

另请注意:这可以通过“在文件中查找”搜索以及函数名称来完成。此搜索将返回更多误报,但仍会找到对该函数的所有引用。

此外,即使在 vs 2005 中,如果您双击错误框中的错误,它应该将光标放在导致问题的行上,或者更确切地说是抛出错误的行,如果它不是代码行而是就像一个结束},然后告诉我们一些不同的东西。

于 2012-06-18T20:37:58.737 回答