Почему коллекция людей имеет элементы в ней, только если я переопределяю ее в подклассах? Вот код. Если я раскомментирую переопределенные методы, тогда моя коллекция имеет 2 человека в парке.C# - почему я получаю пустую коллекцию?
public class Park : Thing
{
}
public abstract class Thing
{
public virtual List<Thing> people { get; } = new List<Thing>();
}
public class PersonA : Thing
{
Thing p;
public string Name { get; set; }
public PersonA(Thing p)
{
this.p = p;
Name = "Marry";
this.p.people.Add(this);
}
//public override List<Thing> people => p.people;
}
public class PersonB : Thing
{
Thing p;
public string Name { get; set; }
public PersonB(Thing p)
{
this.p = p;
Name = "Joe";
this.p.people.Add(this);
}
//public override List<Thing> people => p.people;
}
А вот тестовое приложение:
Thing park = new Park();
park = new PersonA(park);
park = new PersonB(park);
Console.WriteLine(park.people.Count);
используйте отладчик и пройдите через код, и вы увидите, где вы ошибетесь. вы даже попробовали это ...? – MethodMan
Ваш базовый класс имеет новый список. Таким образом, он будет пустым, если вы не отмените его. Попробуйте отладки. –
AVK
В конструкторах вы добавляете список членов 'p', а не собственный список классов. 'p.people' - это не тот же список, что и' this.people'. Если вы не пытаетесь выразить, что Person_has a_ вещь, ему не нужен член 'p'. – Uueerdo