Новый синтаксис C# 9.0 позволяет использовать новый вид выражения:
var newPerson = oldPerson with { Age = "21" };
При просмотре предыдущей строки кода возникают следующие вопросы:
- Это ссылка или новая копия объекта?
- Если это ссылка, как насчет наследования? Рассмотрим следующую строку кода:
Person child = new Child{ FirstName = "Jan", LastName = "Brown", IsInKindergarten = false };
Person person = child with { LastName = "Williams" }
Разрешает ли компилятор объекту person
наследовать свойство IsInKindergarten
?