кто бы знал. Я до сих пор не знаю как они проблему сравнения рекордов решили при наличии наследования
без запуска кода, попробуйте в начале подумать что вы тут ожидаете using System; var pointA = new Point(1,1); var pointB = new Point(2,2); var coloredPointA = new ColoredPoint(1,1,5); Console.WriteLine(pointA == pointB); Console.WriteLine(pointA == coloredPointA); Console.WriteLine(pointA == (Point)coloredPointA); Console.WriteLine(ArePointsTheSame(pointA, coloredPointA)); record Point(int x, int y); record ColoredPoint(int x, int y, int color): Point(x, y); static bool ArePointsTheSame(Point a, Point b) => a == b;
ожидаю что первая строчка вернёт false, а от остальных ничего не ожидаю
удачи дебажить последнюю функцию, которая валидно принимает два поинта и идёт нахуй на их законном сравнении
я ожидал честно говоря хз чего. Экспешна на сравнении разных типов чтобы хотя бы не давать UB? не уверен даже
первые true, последнее false?
а точно, там же точки а и б разные
ну это ладно. Вот что делать с функцией, которая принимает два поинта, сравнивает их и идёт нахуй на равных поинтах?
что делать если у тебя есть функция принимает 2 object? и ты передашь туда 2 одинаковых числа?
У меня рекорды имеют семантику структурного сравнения
Фолс же везде должно быть?
всё так, и твой рекорд это данные + тип
от не-sealed классов ожидать конкретной работы виртуальных методов это странно
Ну тогда надо отказываться от структурного сравнения. Или ОБОЖЕ запрещать наследование рекордов
ниразу не видел, чтобы в дотнете 2 объекта разного типа возвращали true при сравнении
Но у меня функция на двух структурно сравниваемых рекордах оперирует
можно переопределить метод так, который тип будет проверять и сравнивать
помогу тебе sealed record Point();
Я помню этот аргумент ещё с нашего спора про STJ Просто добавь атрибутов! Как я их добавлю в 3рд пати либу
а это хороший вопрос на собесе, чтобы узнать насколько хорошо знает человек платформу
ну по факту сделали лучшее из того что сделали при сохранении возможности наследования. Т.е. или надо был запретить наследование вообще, или сделать как сделали
и если человек отвечает что-то кроме "я не ебу" отказывать в оффере либо по причине неправильно, либо по причине илья
это всё таки проблема либы, тот кто писал мог и на F# хуйни наворотить
ну если это в спеке есть почему и нет, но и вопрос так на прощупать, чем реально что-то узнавать)
можно же дальше развить, хоть и не правильно даже ответил, узнать почему так решил, как бы сделал если был разрабом этой фичи, ну или рослином 🤣
Ну такое. Лучше попросить человека написать что нибудь
хз, Я думаю интересно посмотреть размышления, чем сухо какой-то дефолтный код, или алгоритмы
Обсуждают сегодня