Комментарии 10
Записи структур предоставляют все преимущества записей, такие как неизменяемость
Это неверно. Чтобы record struct
стала неизменяемой, надо объявить её как readonly record struct
.
А чего вы минусуете человека? В документации так и написано.
Это просто показатель, что язык C# идёт по стопам C++. Язык становится насколько сложным, что никто уже не знает его на 100%.
Кому лень искать:
Positional properties are immutable in a
record class
and areadonly record struct
. They're mutable in arecord struct
.
Как по мне, дак получилась каша из ключевых слов иммутабельности. Для супер сеньоров такие конструкции вполне понятны, а вот новичков в языке могут сильно запутать.
Ну что же, и я придерусь))
Фраза "Записи структур предоставляют все преимущества записей, такие как неизменяемость", абсолютно корректна, поскольку компилятор/среда это предоставляет из коробки (девелоперу не нужно это вручную реализовывать). Просто упущенно автором, что для этого нужно добавить одно ключевое слово.
Ваш комментарий полезен, но сильно категоричен))
Одно дело, когда ошибки допускаются в комментариях, и совсем другое — в статьях, которые находятся на первой странице выдачи в поисковиках. Зачем людей вводить в заблуждение?
Еще раз повторю - здесь НЕТ ошибки. Фраза ("Записи структур предоставляют все преимущества записей, такие как неизменяемость") абсолютно корректна!
Здесь не написано "public record struct Rectangle(int Width, int Height);
" является неизменяемой.
Здесь не написано "Записи структур ЯВЛЯЮТСЯ неизменяемыми"
Созвучно с record в Delphi, но там record единственный тип структур.
Не стоит забывать, что массив структур окажется таки в куче. И, в отличие от массива объектов, в куче будет всё его содержимое, а не ссылки на объекты. И когда размер массива станет больше 85 Кб (магическое число), он окажется в LOH. А LOH, как говорится, это судьба)
Record structs в C#: эффективные и безопасные типы данных