Не все ветви кода возвращают значение

312
03 марта 2018, 17:49

CS0161 "Program.Calculate(string, int, int)": не все ветви кода возвращают значение. ConsoleApp1 C:\Users\денис\source\repos\calculateoncsharp\ConsoleApp1\Program.cs

public static int Calculate(string action1, int a2, int a1)
{
    switch (action1){
        case "pi":
            return a1 + a2;
        case "mi":
            return a1 - a2;
        case "mu":
            return a1 * a2;
        case "de":
            return a1 / a2;
        default:
            Console.WriteLine("Error");
            break;
    }
}
Answer 1

Правильное решение - не возвращать какое-то нейтральные значение, а выбросить исключение:

public static int Calculate(string action1, int a2, int a1)
{
    switch (action1){
        case "pi":
            return a1 + a2;
        case "mi":
            return a1 - a2;
        case "mu":
            return a1 * a2;
        case "de":
            return a1 / a2;
        default:
            throw new ArgumentException();
    }
}

Перехватывать исключение и выводить сообщение об ошибке будет вызывающая сторона:

Console.WriteLine("Введите команду");
string action = Console.ReadLine();
try
{
    int z = Calculate(action, x, y);
}
catch (ArgumentException)
{
    Console.WriteLine("Команда неверна!");
}
Answer 2

Метод в любом случае должен возвращает значение типа int. В ветке default ничего не возвращается, поэтому и ошибка.

Answer 3

В default надо возвращать какое-то значение типа int, которое возвращает функция

public static int Calculate(string action1, int a2, int a1)
    {
        switch (action1)
        {
            case "pi":
                return a1 + a2;
            case "mi":
                return a1 - a2;
            case "mu":
                return a1 * a2;
            case "de":
                return a1 / a2;
            default:
                Console.WriteLine("Error");
                return 1;
                //break;
        }
    }
READ ALSO
Переключение между Canvas из скрипта

Переключение между Canvas из скрипта

Как реализовать переключение между Canvas из скрипта?

214
Отправка POST запроса C#

Отправка POST запроса C#

Мне необходимо сделать ПО для авторегистрации на одном из сайтовДелаю подобное первый раз

277
Как узнать все об области видимости класса с помощью рефлексии в C#?

Как узнать все об области видимости класса с помощью рефлексии в C#?

Необходимо узнать модификаторы доступа определенного класса,используя методы рефлексии

219
Работа с сокетами(отправка данных с бд)

Работа с сокетами(отправка данных с бд)

Есть клиент, который при помощи сокета ТСР отправляет запрос на сервер(select * from table1), сервер его получает и ищет в бдКак эти данные сокетами...

231