Функция арифметики
Задача: написать функцию, которая будет выполнять арифметические задачи (сложение, вычитание, умножение, деление), короче говоря - элементарнейшие действия в программировании.
Написал следующий код:
using System;
public class Kata
{
public static double Arithmetic(double a, double b, string op)
{
double result = 0;
if (op == "add")
{
result = a + b;
return result;
}
else if (op == "subtract")
{
result = a - b;
return result;
}
else if (op == "multiply")
{
result = a * b;
return result;
}
else if (op == "divide")
{
result = a / b;
return result;
}
}
}
Входными данными являются: переменные типа double a и b, и string op
Понимаю, что вопрос скорее смешной чем серьёзный, но я бы и не обращался, если бы всё заработало - вместо этого выдаёт ошибку:
src/Solution.cs(5,24): error CS0161: 'Kata.Arithmetic(double, double, string)': not all code paths return a value
Что же пошло не так...
Ответы (2 шт):
public static double Arithmetic(double a, double b, string op)
{
double result = 0;
if (op == "add")
result = a + b;
else if (op == "subtract")
result = a - b;
else if (op == "multiply")
result = a * b;
else if (op == "divide")
result = a / b;
return result;
}
В дополнение к ответу от @Igor, еще можно вот так:
public static double Arithmetic(double a, double b, string op)
{
double result = 0;
switch(op)
{
case "add":
result = a + b;
break;
case "substract":
result = a - b;
break;
case "multiply":
result = a * b;
break;
case "divide":
result = a / b;
break;
}
return result;
}
Или с помощью нового синтаксиса, доступного в C# 8.0:
public static double Arithmetic(double a, double b, string op) => op switch
{
"add" => a + b,
"substract" => a - b,
"multiply" => a * b,
"divide" => a / b,
_ => 0
};
Но лучше для значения "по умолчанию" не возвращать 0, а бросить исключение
_ => throw new InvalidOperationException("Unknown arithmetic operation");