Я немного упростил свой код чтоб мне могли обьяснить. Короче есть базовый клас Vegetable, и также Tomato, который наследуют базовый. Я создаю список типа Vegetable и добавляю туда обьекты типа Tomato, указывая в каждом количество помидорок (переменная quantity). Проблема заключаеться в конце, когда я пытаюсь вывести весь список обьектов с их соответствующим количеством. При дебаге увидел, что обьекты имеют 2 переменные:
quantity (Vegetable) [int]: 0 //это то, что выводит в конце
quantity [int]: 2 //тут как раз число, котороя я вводил
Обьясните, пожалуйста, почему в обьектах двое переменных, и как мне в конце вывести правильную переменную.
class Vegetable
{
public int quantity;
}
class Tomato : Vegetable
{
new public int quantity { get; set; }
}
class Program13
{
static void Main(string[] args)
{
List<Vegetable> vegetableList = new List<Vegetable>();
Tomato tomato1 = new Tomato();
Console.WriteLine("Write quantity of tomatoes1");
vegetableList.Add(tomato1);
tomato1.quantity = Convert.ToInt32(Console.ReadLine());
Tomato tomato2 = new Tomato();
Console.WriteLine("Write quantity of tomatoes2");
vegetableList.Add(tomato2);
tomato2.quantity = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Salad contains:");
foreach (var obj in vegetableList)
{
Console.WriteLine($"{obj.quantity} {obj.GetType()}");
}
} }
Выводит это: Salad contains:
0 Tomato
0 Tomato