Ошбика not all code paths return a value в коде

Написал код, который должен сравнить цену при вводе пользователем с ценой в 10000, если цена больше либо равна 10000 то должна выводиться сумма с учетом скидки. Если цена меньше то она и должна выводиться.

Скажите где ошибка?

static void Main(string[] args)
{
    int totalPrice = Convert.ToInt32(Console.ReadLine());
    Discount(totalPrice);
}

static int Discount(int Price)
{
    if(Price >= 10000)
    {
        Console.WriteLine(0.2 * Price);
    }
    else
    {
        Console.WriteLine(Price);
    }
}

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

Автор решения: Vivus
static void Main(string[] args)
{
    int totalPrice = Convert.ToInt32(Console.ReadLine());
    Discount(totalPrice);
}

static void Discount(int Price)
{
    if(Price >= 10000)
    {
        Console.WriteLine(0.2 * Price);
    }
    else
    {
        Console.WriteLine(Price);
    }
}

Метод имеющий [тип возвращаемого значения int] обязательно должен вернуть целое число. У вас он ничего не возвращает. https://metanit.com/sharp/tutorial/2.8.php

→ Ссылка
Автор решения: Faraday

Ошибка "not all code paths return a value" переводится как "не все пути кода возвращают значение". Что это значит? Сначала разберём, как нужно описывать методы в программе. Вот стандартная схема описания метода:

accessMod [static] returnType methodName(
    arg1Type arg1Name, arg2Type arg2Name, ...)

Обратите внимание на returnType. Если ваш метод должен просто делать какую-то работу, и не должен возвращать результата своей работы, нужно использовать void. Вот пример:

static void PrintSomething()
{
    Console.WriteLine("Something");
}

Этот метод просто выводит что-то в консоль и не больше того. Если у вас код, должен что-то считать (для примера), тогда нужно указать, что метод должен возвращать тип данных результата своей работы. Следующий пример:

static int Sum()
{
    return 2 + 2;
}

Обратите внимание, что для таких методов обязательное наличие ключевого слова return, иначе, вы получите ошибку "not all code paths return a value" (как в вашем случае).

Так же вы можете передавать параметры в такой метод:

static int Sum(int first, int second)
{
    return first + second;
}

Для решения конкретно вашей проблемы, вам нужно указать, что ваш метод должен возвращать void:

static void Discount(int Price)
{
    if(Price >= 10000)
    {
        Console.WriteLine(0.2 * Price);
    }
    else
    {
        Console.WriteLine(Price);
    }
}

Если вы хотите, что бы ваш метод ещё и возвращал результат своей работы, измените код следующим образом:

static float Discount(int Price)
{
    float result = Price;
    if(Price >= 10000)
    {
        result = 0.2 * Price
    }

    Console.WriteLine(result);
    return result;
}

И в методе Main:

static void Main(string[] args)
{
    int totalPrice = Convert.ToInt32(Console.ReadLine());
    float discount = Discount(totalPrice);
}

Так же обратите внимание на соответствие типов данных float в методе Discount.

→ Ссылка