Сохранение результата в переменной C#

167
08 июня 2018, 19:40

Народ может и глупо звучить но не как не могу понять почему не работает

 class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("Введите сумму: ");
                int enterSum = Convert.ToInt32(Console.ReadLine());
                int s = enterSum;
                int r = 0;
                MethodCall(s,  ref r);
                BLogic bLogic = new BLogic();
                bLogic.MethodResult(s, r);
            }
        }
        public static int MethodCall(int sum, ref int result)
        {
            if (result != null)
            {
                return result += sum;
            }
            return sum;       
        }
    }
___________________________________________________________
class BLogic
    {
        private int _sum { get; set; }
        private int _result { get; set; }
        public BLogic()
        {
        }
        public void MethodResult(int sum, int result)
        {
            _sum = sum;
            _result = result;
            DateTime date = DateTime.Now;
            Console.WriteLine($"Сумма {_sum} | Результат = {_result} | Дата внесения = {date}");
        }
    }

Вот такой код.
Нужно? что бы при каждой последующей итерации цикла результат становиться (sum += result) то есть введённая сумма (к примеру 500) прибавлялась к результату (который при первой итерации равен 0 то есть результат равен 500). А, при следующей итерации результат который был 500 + введённое число (к примеру 1000) и того результат равен уже 1500. Вроде просто но всё равно не работает.
Результат всегда (sum 500 и result 500) при следующей итерации (sum 1000 и result 1000) ну не могу понять почему так. Объясните пожалуйста.

Пробовал и без (ref) результат тот же.

Answer 1

Никаких передач по ссылке здесь не надо, просто храните данные вне цикла. Также у вас много лишних инициализаций.

static void Main(string[] args)
{
   int result = 0;
   BLogic bLogic = new BLogic();
   while (true)
   {
       Console.Write("Введите сумму: ");
       bool ok = int.TryParse(Console.ReadLine(), out var value);
       if (ok)
       {
          result += value;
          bLogic.MethodResult(result, value);
       }
       else
       {
          Console.WriteLine("Введено некорректное значение");
       }
   }
}
READ ALSO
Ошибка No Source available при клике на CustomButton

Ошибка No Source available при клике на CustomButton

При нажатии на CustomButton среда Visual Studio показывает следующее сообщение:

140
Объединение двух проектов [закрыт]

Объединение двух проектов [закрыт]

Есть два независимых проекта, VS 2017 и 2015, у каждого своя база данныхНеобходимо по нажатию кнопки запускать один проект из другого, просто вызвать...

162
Проверка коллизий между объектами

Проверка коллизий между объектами

имеется два объекта (игрок и враг, находятся каждый на своем слое, висят коллайдеры и ригидбоди2Д, используется стандартная физика Юнити,...

153
Как отметить первый элемент в списке (Windows Forms)

Как отметить первый элемент в списке (Windows Forms)

Для того чтобы автоматически выбрать первый элемент в списке можно исполжьзовать

159