Сначала полностью создается, затем инициализируется. Однако вы никогда не получите ссылку на такой объект, если возникнет исключение, компилятор гарантирует, что ваша ссылка может только когда-либо ссылаться на правильно инициализированный объект. Он использует временный, чтобы гарантировать это.
Так, например, этот код:
var obj = new Model {
FirstName = reader[0].ToString(),
LastName = reader[1].ToString(),
Age = Convert.ToInt32(reader[2].ToString())
};
Переписан компилятором в:
var temp = new Model();
temp.FirstName = reader[0].ToString();
temp.LastName = reader[1].ToString();
temp.Age = Convert.ToInt32(reader[2].ToString())
var obj = temp;