C# 9.0 С-выражениями. Как их использовать?

Новый синтаксис 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 ответ

Решение

В этом случае 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

Другие вопросы по тегам