Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Проблема с автосвойствами. Ошибка компилятора CS0840

#c_sharp #компилятор


Я использую VS 2012


  error CS0840: Pisos.Rectangle.Area.get должен декларировать тело, так
  как оно не отмечено как абстрактное или внешнее. Автоматически
  реализованные свойства должны определять функции доступа get и set.


class Program
{
    static void Main()
    {
        Rectangle rectangle = new Rectangle(10, 20);
        double a = rectangle.AreaCalc(rectangle.side1, rectangle.side2);
        double b = rectangle.PerimeterCalc(rectangle.side1, rectangle.side2);

        Console.WriteLine(a);
        Console.WriteLine(b);

        Console.ReadKey();
    }
}

class Rectangle
{
    public double side1, side2;

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

    double Area { get; }
    double Perimeter { get; }

    public double AreaCalc(double side1, double side2)
    {
        double Ar = side1 * side2;
        return Ar;
    }

    public double PerimeterCalc(double side1, double side2)
    {
        double Per = 2 * (side1 + side2);
        return Per;
    }
}

    


Ответы

Ответ 1



В C# версии младше 6 автосвойства только для чтения (содержат только get) не поддерживаются. Варианта два: Используйте VS 2015 (в ней используется компилятор для C# 6). Добавьте private set. Это более правильный вариант, учитывая, что, судя по коду, эти свойства не являются readonly свойствами.

Комментариев нет:

Отправить комментарий