Эквивалентность record-ов
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.23 15:08
Оценка:
Что-то прямо сижу и тихо охрениваю.

В record нельзя добавить собственную реализацию эквивалентности (переопределит Equals) и при это они не умеют реализовывать эквивалентность для записей со списками.

record R(int X, ImmutableArray<int> Xs);

static class P
{
    static void Main()
    {
        var r1 = new R(1,ImmutableArray.Create(2));
        var r2 = new R(1,ImmutableArray.Create(2));

        Console.WriteLine(r1 == r2);
   }
}


Выводит False!

С массивами тоже самое. Т.е. любая ссылка в параметре и прощай эквивалентность. Причем и вручную это не ясно как исправить.

А как жить то с такими говнорекордами? Вот на фиг так делать?

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