Re[2]: record, mutable field?
От: Silver_S Ниоткуда  
Дата: 04.01.21 16:42
Оценка:
S_S>Если в record хочется добавить вычисляемое get property, но надо закешировать результат в mutable field (больше некуда). Как этот field исключить из ToString, GetHashCode, Equals?
S_S>Если вручную переопределять все GetHashCode, Equals, ToString, то половина преимуществ record пропадает.

Хотя обходные пути есть — добавить это поле в производном record, а переопределения GetHashCode,.. направить на base.
Но плохо, что конструктор надо снова переопределять. Если был краткий primary конструктор, то много лишней писанины.

Лучше бы сделали, чтобы в производном record, в таких конструкторах неявно добавлялись параметры из base record.
public record Rec1(int Prop1)
{
}

public record Rec2(int Prop2) : Rec1 // Ошибка. В производном такие конструкторы нельзя. Если в базовом нет без параметров. Лучше бы неявно превращался в конструктор: Rec2(int Prop1, int Prop2)
{
}
Отредактировано 04.01.2021 16:43 Silver_S . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.