Возвращение двух переменных из метода

76
16 января 2022, 11:00

Помогите самовару. Есть два метода, которые по отдельности возвращают координаты х и у соотвественно. Как сделать так, чтобы один метод возвращал сразу две переменные, чтобы не разбивать на два метода? Код прилагается:

        public double FindCrossCordX()
        {
            x = (b2 - b1) / (a1 - a2);
            return x;
        }
        public double FindCrossCordY()
        {
            y = a1 * x + b1;
            return y;
        }
Answer 1

Если ваши x и y объявлены с модификатором static до вызова метода, а так же известны значения переменных a1, a2, b1, b2, то:

public void PerformCalculate()
{
  x = (b2 - b1) / (a1 - a2);
  y = a1 * x + b1;
}

если x и y не объявлены, то:

public void PerformCalculate(out double x, out double y)
{
      x = (b2 - b1) / (a1 - a2);
      y = a1 * x + b1;
}

Использование метода, в случае нестатичных x и y:

double x, y = 0.0;
PerformCalculate(out x, out y);

Так же вы можете использовать кортежи (tuples):

public (double x, double y) GetCrosses()
{
   double get_x = (b2 - b1) / (a1 - a2);
   double get_y = a1 * x + b1;
   var result = (x:get_x, y: get_y);
   return result;
}

Применение:

var tuple = GetCrosses();
 Console.WriteLine(tuple.x);
 Console.WriteLine(tuple.y);

Или сформировать собственный класс для результата.