Re[2]: Эквивалентность record-ов
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.23 16:07
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Там же ещё есть record struct, которые вообще ValueType.


Как-то раньше в структурах удавалось Equals переопределять ведь.

_>Поэтому переопределение в рекордах немножко своё. Нужно сделать Equals от IEquatable, но без override, компилятор поймёт:


_>
_>public sealed record R(int x, int[] xs)
_>{
_>    public bool Equals(R? other)
_>        => other.x == x && other.xs.SequenceEqual(xs);
_>}
_>


_>И тогда на == будет True


Что-то не очень понял. Правда вот так понял:
record R(int X, int[] Xs)
{
    public virtual bool Equals(R? other) => other != null && other.X == X && other.Xs.SequenceEqual(Xs);

    public override int GetHashCode()
    {
        return X;
    }
}


Но в любом случае все это выглядит странным. А что что не реализована эквивалентность для вложенных последовательностей — это вообще лажа какая-то.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.