Урок 8: Объекты-значения и записи (records)
Когда цена — это просто decimal, а валюта — просто string, ничто не мешает вам складывать шекели с долларами или изменять сумму посреди вычисления. В этом уроке мы строим объекты-значения с помощью записей (records) C# — неизменяемых значений, сравниваемых по значению, — так что такие ошибки блокиру
Объект-значение — это как купюра в 20 шекелей: неважно, какую именно банкноту вы получили — важна только стоимость. И вы не можете «отредактировать» банкноту — только заменить её другой.
- Объект-значение
- Значение, определяемое только его данными — две цены по 10 ILS — это одно и то же значение, без отдельной идентичности. Всегда неизменяемо.
- тип record
- Тип C#, где компилятор генерирует равенство по значению (Equals/==), init-only-свойства, конструктор и ToString из одного объявления.
- неизменяемость
- Состояние объекта никогда не меняется после создания. «Изменение» выполняется with-выражением — новая копия с обновлённым значением, оригинал нетронут.