Что выведет код Junior Типы значений и ссылочные обновлено
record и выражение with
Вопрос
Что выведет программа (.NET 8)? По строке на каждый вывод.
var a = new User("Ира", 30);
var b = a with { Age = 31 };
Console.WriteLine(a.Age);
Console.WriteLine(b);
Console.WriteLine(a == b with { Age = 30 });
record User(string Name, int Age);
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 30, User { Name = Ира, Age = 31 }, True. with создаёт копию с изменёнными свойствами, исходный объект не меняется: 30.
Что выведет
30
User { Name = Ира, Age = 31 }
True
Разбор
with создаёт копию с изменёнными свойствами, исходный объект не меняется: 30. ToString у record печатает имя типа и свойства. Копия b с возвращённым Age = 30 равна a по значению: True.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Изменение структуры в списке и массиве
Следующий вопрос
Защитная копия у readonly-поля структуры
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Что такое boxing и unboxing
- Сравнение двух упакованных чисел через ==
- Когда происходит упаковка
- Переприсваивание параметра-класса
- default и конструктор структуры без параметров
- Число различных точек
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)