3

这是我的 Circle 类代码。

class Circle
{
    private double radius;
    private double area;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    public double Area
    {
        set { area = Math.PI * Math.Pow(radius, 2); }
        get { return area; }

    }
}

这是测试代码。

    Circle circle1 = new Circle(3);

    MessageBox.Show("Circle 1 Area: " + circle1.Area);

所以出于某种原因,当我使用 MessageBox.Show() 时,它似乎给了我零值。我给圆的值是 3,所以我的构造函数不应该设置半径的值吗?

4

3 回答 3

6

您的Area财产应该是:

public double Area
{
    get { return Math.PI * Math.Pow(radius, 2); }
}

而且您不需要该area字段。

于 2013-11-07T19:33:22.087 回答
6

因为你从来没有在 Area 上调用过 setter。也许你想要这样的东西?

class Circle
{
    private double radius;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    public double Area
    {
        get { return Math.PI * Math.Pow(radius, 2); }    
    }
}

这将在每次请求时计算面积。

于 2013-11-07T19:33:34.873 回答
1

我不确定set在这种情况下您是否需要 a(您没有使用它)

尝试

    get { return  Math.PI * Math.Pow(radius, 2); }
于 2013-11-07T19:33:55.620 回答