Не передаёт значение

Не передаёт значение DiscountOneHourse, хотя я записал число 20. При выводе выдаёт число 0.

    class Program{
                //Прайс-лист.
                else if (Console.ReadKey(true).Key == ConsoleKey.D2) {
                    Console.Clear();

                    Console.WriteLine("Прайс-лист:\n ");

                    PriceList priceList = new PriceList(150, 275, 700); //Цена за: 1 час, 2 часа и всю ночь.
                    //Персональная скидка.
                    PriceList DiscountOneHourse = new PriceList(20);
                    

                    Console.WriteLine(priceList.PriceListAndDiscount);
                }
}

    public class PriceList{

        public PriceList(int discountOneHourse)
        {
            DiscountOneHourse = discountOneHourse;
        }

    public string PriceListAndDiscount
        {
            get
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine($"1. Один час: {OneHourse} рублей" +
                    $"\n2. Два часа: {TwoHourse} рублей" +
                    $"\n3. Вся ночь: {AllNight} рублей" +
                    $"\nКакой вариант выбираете?");
                if (Console.ReadKey(true).Key == ConsoleKey.D1) {
                    Console.WriteLine($"Ваша скидка составляет: {DiscountOneHourse}%. Приятного сеанса.");
                }
                //else if (Console.ReadKey(true).Key == ConsoleKey.D2) {
                //    Console.WriteLine($"Ваша скидка составляет: {DiscountTwoHourse}%. Приятного сеанса.");
                //}
                //else if (Console.ReadKey(true).Key == ConsoleKey.D3) {
                //    Console.WriteLine($"Ваша скидка составляет: {DiscountAllNight}%. Приятного сеанса.");
                //}
                return "";
            }
            set { }
        }
}



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

Автор решения: Aziz Umarov

Я предполагаю что у Автора есть свойство DiscountOneHourse в классе PriceList, если это так то перепишите

//Персональная скидка.
PriceList DiscountOneHourse = new PriceList(20);

на

priceList.DiscountOneHourse = 20;
→ Ссылка
Автор решения: CrazyElf

Уточните задачу. Если вы хотите выставить скидку сразу для всех экземпляров класса, то у вас должно быть статическое поле DiscountOneHourse в классе PriceList, тогда оно будет одинаковое для всех экземпляров. Но выставлять его при этом надо, конечно, через статическое же свойство или статический метод класса, а не с помощью создания нового экземпляра класса.

Если же это индивидуальная скидка, то выставлять её надо с помощью поля или метода в том экземпляре класса, для которого вы делаете эту скидку, т.е. в priceList, а не создавать новый экземпляр класса, у которого будет своё поле DiscountOneHourse, про содержимое которого экземпляр класса priceList конечно же ничего не знает.

То есть в первую очередь вам нужно уточнить задачу и поправить архитектуру.

→ Ссылка