seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Как правильно присвоить локальное значение переменной в C#?

Добрый вечер!
Пишу свою вторую учебную программу на C# - консольный калькулятор
Цель такая:
  • Пользователь вводит первое число, затем он вводит операнд, чтобы далее ввести второе число и получить результат

И перед тем, как тестировать программу, компилятор вывел вот такую информацию:
Использование локальной переменной "result", которой не присвоено значение. [csharp-dotnetcore-calculator]
И перед вами пример кода самого консольного калькулятора:
using System;
namespace csharp_dotnetcore_calculator
{
    class Program
    {
        public static float add(float first,float second)
        {
            return first + second;//Сложение
        }
        public static float subtraction(float first,float second)
        {
            return first - second;//Вычитание
        }
        public static float multiplication(float first,float second)
        {
            return first * second;
        }
        public static float division(float first,float second)
        {
            return first / second;
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Добро пожаловать в калькулятор!");
            while (true)
            {
                Console.WriteLine("Введите первое число:");
                float f = float.Parse(Console.ReadLine());
                Console.WriteLine("Введите операнд(+,-,*,/):");
                string o = Console.ReadLine();
                Console.WriteLine("Введите второе число:");
                float s = float.Parse(Console.ReadLine());
                float result;
                if (o == "+")
                {
                    result = add(f, s);
                }
                else if(o == "-")
                {
                    result = subtraction(f, s);
                }
                else if(o == "*")
                {
                    result = multiplication(f, s);
                }
                else if(o == "/")
                {
                    result = division(f, s);
                }

                string value = $"Результат: {result}";
                Console.WriteLine(value);




                
            }
        }
    }
}

Расскажите, как правильно присваивать значение локальной переменной, чтобы проблема была решена?
Заранее вам спасибо!
  • Вопрос задан
  • 521 просмотр
Решения вопроса 1
ayazer
@ayazer
Sr. Software Engineer
float result;

Если пользователь введет в качестве операции не что-то с { +, -, *, / } - выйдет неопределенное поведение т.к. result будет не инициализирован в момент
string value = $"Результат: {result}";

Либо делайте
float result = 0f;

Либо (что правильней) - не допускайте возможности такой ситуации вообще
if (o == "+")
                {
                    result = add(f, s);
                }
                else if(o == "-")
                {
                    result = subtraction(f, s);
                }
                else if(o == "*")
                {
                    result = multiplication(f, s);
                }
                else if(o == "/")
                {
                    result = division(f, s);
                }
                else
                      throw new Exception($"Unexpected operation '{o}'");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Сделайте как в калькуляторе первая переменная результат вторая и третья операция и введённое значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы