Передача параметра в объект в фигурных скобках во время создания экземпляра в C#

при передаче переменной в объект во время создания экземпляра, например в

SomeObject newObject = new SomeObject() { SomeString = "String goes here" };

будет ли переменная SomeString доступна в конструкторе или будет назначена впоследствии? Если бы мне нужно было использовать его в конструкторе, он работал бы или мне нужно было бы передать его в качестве параметра, используя

new SomeObject("String goes here");

2 ответов


будет ли переменная SomeString доступна в конструкторе или будет назначена впоследствии?

Он будет назначен.

SomeObject newObject = new SomeObject() { SomeString = "String goes here" };

примерно эквивалентен / синтаксический сахар:

SomeObject temp = new SomeObject();
temp.SomeString = "String goes here";
SomeObject newObject = temp;

Он будет назначен в первом случае. Примечание: Для этого требуется конструктор без параметров, который будет существовать по умолчанию, если не определен конструктор с параметрами. В этом случае необходимо явно определить оба конструктора.

для более подробной информации вы можете посмотреть детали на Инициализаторы Объектов.