1. ホーム
  2. c#

[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?

2022-02-16 02:34:40

質問

C# visual Studio 2015でコンパイル中にエラーが発生する以下のコードがあります。

class Oval:Shape
{
    private double major_axis, minor_axis;
    public Oval(double Major_Axis, double Minor_Axis)
    {
      major_axis = Major_Axis;
      minor_axis = Minor_Axis;
    } //Constructor
}
class Circle:Oval
{
    private double radius;
    public Circle(double Circle_Radius) // Getting Error on this line
    {
      radius = Circle_Radius;  
    } //constructor
}

解決方法は?

バグを修正する。

このエラーは、パラメータなしのコンストラクタがないために発生します。 base() メソッドをコンストラクタに追加します(ちょうど user3185569 が言っていた)

コードを修正する

明らかに.NETの基礎が不足しているようなので、以下のことを念頭に置いてコードを書き直すことにしました。

a. 規約

コードに適用すべき共通の規則について、いくつかのルールがあります。

メンバーは通常 m または _ を指定し、その後に memberName (キャメルケーシング)。

プロパティは通常、次のように規則的に記述されます。 PropertyName メソッドも同様です。

パラメータと変数は単純にキャメルケースに入れられます。 parameterName

b. アクセス修飾子

Ovalとcircleの用途は分かりませんが、おそらくは OvalCircle .

このトピックについて、もう少し詳しく読むには、ここを参照するのが一番だと思います。 https://msdn.microsoft.com/en-us/library/ms173121.aspx

これらのヒントをすべて含むようにコードを書き直しました(あなたの問題も修正しました)。

public class Oval:Shape
{       
    //Constructor
    public Oval(double majorAxis, double minorAxis)
    {
        MajorAxis=majorAxis;
        MinorAxis=minorAxis;
    } 
    
    protected double MajorAxis{ get; set; }     
    protected double MinorAxis{ get; set; }     
}    

public class Circle:Oval
{       
    //Constructor
    public Circle(double radius): base(radius,radius)
    {
        radius = Circle_Radius;  
    }
    
    public double Radius
    {
        get
        {
            return MajorAxis;
        }
        set
        {
            MajorAxis = value;
            MinorAxis = value;
        }       
    }
}