c#这个问题没有做出来,谁可以回答一下

c#描述一个几何图形的抽象类,包括求面积、求周长两个抽象方法,并派生出长方形类、正方形类、圆形类、三角形类,在主函数中输入图形的类别,并输入相关数据,求其面积和周长


//抽象类Geometric
    public abstract class Geometric
    {
        //抽象方法,求面积
        public abstract double Area();

        //抽象方法,求周长
        public abstract double Perimeter();
    }

//长方形类Rectangle:
    public class Rectangle : Geometric
    {
        private double length;
        private double width;

        public Rectangle(double l, double w)
        {
            this.length = l;
            this.width = w;
        }
        public override double Area()
        {
            return length * width;
        }

        public override double Perimeter()
        {
            return 2 * (length + width);
        }

    }

//正方形类Square:
    public class Square : Geometric
    {
        private double side;

        public Square(double side)
        {
            this.side = side;
        }

        public override double Area()
        {
            return side * side;
        }

        public override double Perimeter()
        {
            return 4 * side;
        }
    }

//圆形类Circle:
    public class Circle : Geometric
    {
        private double radius;

        public Circle(double radius)
        {
            this.radius = radius;
        }
        public override double Area()
        {
            return Math.PI * radius * radius;
        }

        public override double Perimeter()
        {
            return 2 * Math.PI * radius;
        }
    }

//三角形类Triangle:
    public class Triangle : Geometric
    {
        private double side1;
        private double side2;
        private double side3;

        public Triangle(double side1, double side2, double side3)
        {
            this.side1 = side1;
            this.side2 = side2;
            this.side3 = side3;
        }

        public override double Area()
        {
            double p = (side1 + side2 + side3) / 2;
            return Math.Sqrt(p * (p - side1) * (p - side2) * (p - side3));
        }

        public override double Perimeter()
        {
            return side1 + side2 + side3;
        }
    }

//主函数
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入图形的类型:");
            Console.WriteLine("1.长方形 2.正方形 3.圆形 4.三角形");
            int figure = Convert.ToInt32(Console.ReadLine());
            double area = 0, perimeter = 0;
            switch (figure)
            {
                case 1:
                    Console.WriteLine("请输入对应的长和宽:");
                    double l = Convert.ToDouble(Console.ReadLine());
                    double w = Convert.ToDouble(Console.ReadLine());
                    Rectangle rect = new Rectangle(l, w);
                    area = rect.Area();
                    perimeter = rect.Perimeter();
                    break;
                case 2:
                    Console.WriteLine("请输入对应的边长:");
                    double side = Convert.ToDouble(Console.ReadLine());
                    Square sqaure = new Square(side);
                    area = sqaure.Area();
                    perimeter = sqaure.Perimeter();
                    break;
                case 3:
                    Console.WriteLine("请输入对应的半径:");
                    double r = Convert.ToDouble(Console.ReadLine());
                    Circle circle = new Circle(r);
                    area = circle.Area();
                    perimeter = circle.Perimeter();
                    break;
                case 4:
                    Console.WriteLine("请输入对应的三角形三边长:");
                    double s1 = Convert.ToDouble(Console.ReadLine());
                    double s2 = Convert.ToDouble(Console.ReadLine());
                    double s3 = Convert.ToDouble(Console.ReadLine());
                    Triangle triangle = new Triangle(s1, s2, s3);
                    area = triangle.Area();
                    perimeter = triangle.Perimeter();
                    break;
            }
            Console.WriteLine("面积 = {0}", area);
            Console.WriteLine("周长 = {0}", perimeter);
            Console.ReadKey();
        }
    }