C# 为什么我的圆的值为零?

C# 为什么我的圆的值为零?,c#,geometry,area,C#,Geometry,Area,这是我的圆圈类代码 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 {

这是我的圆圈类代码

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,所以我的构造函数不应该设置半径的值吗?

您的
区域属性应该是:

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

您不需要
区域
字段。

因为您从未在区域上调用setter。也许你想要这样的东西

class Circle
{
    private double radius;

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

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

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

我不确定您在本例中是否需要
集(您没有使用它)

试一试


我认为这是因为当你调用“circle1.area”时,你没有计算面积。您将计算放在“集合”而不是“获取”中。始终最好存储最小值,并根据需要导出相关数量。在这里进行缓存会使您容易出错。正如你所发现的。另外,如果我想为3个圆创建一个数组,我该怎么做?只是好奇。我只知道基本类型数组的基本知识。
    get { return  Math.PI * Math.Pow(radius, 2); }