Создания консольного калькулятора на C#

Здраствуйте, суть вопроса такова - Не понимаю почему в результате умножения получается 0:

public void Multiply()
{
    double[] numbers = new double[9999999];
    double res = 1.0;
    for (int i = 0; ; i++)
    {
        Console.WriteLine("Please Enter a number : ");
        string a = Console.ReadLine();
        Double.TryParse(a, out numbers[i]);
        res *= numbers[i];
        if (a == "quit")
        {
            Console.WriteLine($"result is {res}");
            break;
        }
    }
}

Я сделал такой же код для добавления, только в переменной res я записал 0.0, но он работал правильно. Объясните пожалуйста в чем ошибка :D


Ответы (2 шт):

Автор решения: Igor

Потому что если в a не число, то в numbers[i] оказывается ноль.

   if (Double.TryParse(a, out numbers[i]))
       res *= numbers[i];
→ Ссылка
Автор решения: aepot

Ответ от @Igor безусловно правильный, я только добавлю, что если ещё убрать всё лишее не меняя поведения метода, то код получится такой:

public void Multiply()
{
    double res = 1.0;
    while (true)
    {
        Console.Write("Please Enter a number : ");
        string a = Console.ReadLine();
        if (double.TryParse(a, out double number))
        {
            res *= number;
        }
        else if (a == "quit")
        {
            Console.WriteLine($"result is {res}");
            break;
        }
    }
}

Этот код будет потреблять примерно в 9999999 раз меньше памяти.

→ Ссылка