C# 9.0 С-выражениями. Как их использовать?
Новый синтаксис 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
свойство?
1 ответ
В этом случае var newPerson = oldPerson with { Age = "21" };
он создает новый объект, который является копией старого, за исключением другого возраста.
Позволяет ли компилятор объекту-лицу наследовать свойство IsInKindergarten?
да, person
будет FirstName = "Jan", LastName = "Williams", IsInKindergarten = false
Этот синтаксис о записи в С # 9.0, и это неизменяемый тип, действительно, все неизменяемые типы создают новый объект, например как структуру, для получения дополнительной информации об этом вы можете увидеть это https://channel9.msdn.com/Shows/On-NET/C-9-Language-Features