Итак избавились от точки в названии и получили записи.
Впервые попробовал. Поведение отличается от классов.
Взаимные ссылки типа parent <-> child дают переполнение стэка.
Я правда делал не честные записи, но менял ключевое слово clsss на record т.к. судя по документации особых различий не должно быть или я не заметил.
Стоит ли использовать записи в нынешнем виде или подождать до следующей LTS?
public abstract class BaseThing
{
public string Name { get; set; }
public override string ToString()
{
return $"[{this.GetType().Name}: Name={Name}]";
}
}
public record Person : BaseThing // <= error CS8864: Записи могут наследоваться только от объекта или другой записи. (Вот это особо удивило, class это не объект?)
{
private Item item;
public Item Item
{
get => item; set
{
item = value;
item.Person = this;
}
}
public override string ToString()
{
return base.ToString() + $"{Item}"; <= версия на классах работает, рекорд кидает переполнение стэка
}
}
public record Item : BaseThing
{
public Person Person { get; set; }
}