record net5
От: varenikAA https://blevaka.blogspot.com/
Дата: 21.12.20 02:57
Оценка:
Итак избавились от точки в названии и получили записи.
Впервые попробовал. Поведение отличается от классов.
Взаимные ссылки типа 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; }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.