C# 9.0 С-выражениями. Как их использовать? - PullRequest
4 голосов
/ 18 июня 2020

Новый синтаксис C# 9.0 позволяет использовать новый вид выражения:

var newPerson = oldPerson with { Age = "21" };

При просмотре предыдущей строки кода возникают следующие вопросы:

  1. Это ссылка или новая копия объекта?
  2. Если это ссылка, как насчет наследования? Рассмотрим следующую строку кода:
Person child = new Child{ FirstName = "Jan", LastName = "Brown", IsInKindergarten = false };
Person person = child with { LastName = "Williams" }

Разрешает ли компилятор объекту person наследовать свойство IsInKindergarten?

1 Ответ

7 голосов
/ 18 июня 2020

В данном случае var newPerson = oldPerson with { Age = "21" }; он создает новый объект, который является копией старого, за исключением другого возраста.

Позволяет ли компилятор объекту-лицу наследовать свойство IsInKindergarten?

да, person будет FirstName = "Jan", LastName = "Williams", IsInKindergarten = false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...