0

我只是想知道我在一些信息中发现的这段代码是否正确。我觉得奇怪的是,这两个示例中都使用了两次直径,这真的正确吗?

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

4 回答 4

2

这是一个Ellipse类的构造函数,它调用有两个参数的基类构造函数。

它可能看起来像这样:

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 回答
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 回答
1

这取决于基类构造函数对参数的作用,但从语法上讲,它是正确的。

您发布的代码调用与提供的参数匹配的基类构造函数,而不是默认的基类构造函数(如果有)。

于 2012-06-06T06:21:50.553 回答
1

这是构造函数链接,即在子构造函数之前调用基本构造函数。

如果基类有一个构造函数

public Base(double, double)

那么就很好了。

于 2012-06-06T06:22:15.750 回答