-1

メソッド 'WeightOut' のオーバーロードは 2 つの引数を取らない

私のコードは、より効率的にするために微調整する前は機能していました。

これは作業コードです:

私が持っているBASEクラスでは:

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

次に、 INHERITED クラスに次のものがあります。

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

次に、両方のクラスで同じコードを使用せず、継承されたクラスでのみ使用するように変更しました。

BASE クラスでは:

public abstract double WeightOut();

INHERITED クラスでは:

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 の抽象メソッドにパラメーターがないことを確信していますか。発行されている苦情は、継承された関数定義からの不一致と関係がある可能性があります。

2 番目に確認することは、継承されたクラスの "WeightOut" 関数 (具体的には関数名) を右クリックし、オプションを選択しますFind All References。これにより、この関数を呼び出すクラス名/ファイル名と行番号ごとに、コード内のすべての場所のリストが表示されます。それは役立つかもしれません。

注: そのオプションがない場合は、使用している Visual Studio のバージョンを詳しく教えてください。

また、注意: これは、関数名の「Find in Files」検索でも実行できます。この検索で​​は、より多くの誤検知が返されますが、関数へのすべての参照を見つけることができます。

また、vs 2005 でも、[エラー] ボックスでエラーをダブルクリックすると、問題の原因となっている行、またはコード行ではなくエラーをスローしている行にカーソルを置く必要があります。は締めくくりのような}ものですが、それは私たちに何か違うことを教えてくれます。

于 2012-06-18T20:37:58.737 に答える