0

いくつかの情報で見つけたこのコードが正しいかどうか疑問に思っています。私が奇妙だと思うのは、両方の例で直径が2回使用されていることです.これは本当に正しいですか?

public Ellipse(double diameter): base(diameter, diameter)
4

4 に答える 4

2

構文は正しいです。クラスは次のようになります。

public class Base
{
  public Base(double d1, double d2)
  {
  }
}

public Eclipse : Base
{
   public Ellipse(double diameter)
        : base(diameter, diameter)
   {
   }
}
于 2012-06-06T06:23:30.060 に答える
2

これはクラスのEllipseコンストラクターで、2 つのパラメーターを持つ基本クラスのコンストラクターを呼び出します。

次のようになります。

class Shape
{
 public Shape(double diameter1, double diameter2)
 {
 }
}
class Ellipse : Shape
{
 public Ellipse(double diameter) : base(diameter, diameter)
 {
 }
}

new Ellipse(10);10 が Ellipse コンストラクターに渡されると、Shapeクラス コンストラクターが呼び出され、これらの両方のパラメーターの引数として10が渡されます。

于 2012-06-06T06:21:27.983 に答える
1

これは、基本クラスのコンストラクターがパラメーターをどう処理するかによって異なりますが、構文的には正しいです。

投稿したコードは、デフォルトの基本クラス コンストラクター (存在する場合) の代わりに、指定された引数に一致する基本クラス コンストラクターを呼び出します。

于 2012-06-06T06:21:50.553 に答える
1

これはコンストラクターの連鎖です。つまり、子コンストラクターの前に基本コンストラクターを呼び出します。

基本クラスに次のようなコンストラクタがある場合

public Base(double, double)

それなら全然大丈夫です。

于 2012-06-06T06:22:15.750 に答える