Почему поле не инициализируется при использовании пользовательского конструктора копирования записи? ⇐ C#

Место общения программистов C#
Anonymous
Почему поле не инициализируется при использовании пользовательского конструктора копирования записи?

Сообщение Anonymous »

У меня есть эта запись :
record Foo {
string _bar = "initialized";
public string Bar => _bar;
}
< /code>
Я запускаю следующий код: < /p>
var foo = new Foo();
Console.WriteLine(foo?.Bar ?? "null");
var foo2 = foo with { };
Console.WriteLine(foo2?.Bar ?? "null");
< /code>
Это будет создавать: < /p>
initialized
initialized
< /code>
Однако, если мне нужна какая -то пользовательская логика клонирования, которую я реализую в конструкторе копирования: < /p>
protected Foo(Foo other) {
Console.WriteLine("---my cloning method---");
}
< /code>
повторно заработать код тестирования показывает: < /p>
initialized
---my cloning method---
null
< /code>
Таким образом, он выглядит так, как будто код инициализации поля не выполняется для моего конструктора копирования. Почему этого здесь не происходит?

Подробнее здесь: https://stackoverflow.com/questions/796 ... onstructor

Вернуться в «C#»