C# — Имя метода ожидаемая ошибка при возврате переменной?

#c# #methods #return

Вопрос:

Я просто пытаюсь вернуть двойное значение в методе, но я продолжаю получать «ожидаемое имя метода» в строке возвращаемой переменной:

 public class Rectangle
{
    private double height;
    private double width;

    public Rectangle(double h, double w)
    {
        height = h;
        width = w;
    }

    public double perimeter()
    {
        double perimeter = ((2 * height)   (2 * width));
        return perimeter();
    }
 

Кажется, это должно быть достаточно просто, я не могу понять, что происходит не так! Я попытался изменить имя переменной на что-то другое, но Visual Studio НАСТАИВАЕТ на том, что мне нужно указать имя метода в строке возврата вместо переменной, которую я пытаюсь вернуть.

Ответ №1:

Лучше не называть ваши переменные так же, как методы.

Правильное объявление было бы:

 public double Perimeter()
{
    double perimeter = ((2 * height)   (2 * width));
    return perimeter;
}
 

или

 public double Perimeter()
{
    return ((2 * height)   (2 * width));
}
 

или однострочный

 public double Perimeter() => ((2 * height)   (2 * width));
 

или свойство (из комментария @ckuri)

 public double Perimeter => ((2 * height)   (2 * width));
 

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

1. Хотя концептуально то, что он здесь делает, должно быть скорее свойством, а не методом (действием), public double Perimeter => ((2 * height) (2 * width)); т. е.

2. @ckuri да, это тоже довольно справедливо

3. Интересно, что заглавная буква имени метода не изменила его мнение, поэтому я в конечном итоге вернул строку математики напрямую. Спасибо за помощь!