Инициализация свойства списка без «нового списка» вызывает исключение NullReferenceException

using System;
using System.Collections.Generic;

class Parent
{
   public Child Child { get; set; }
}

class Child
{
   public List<string> Strings { get; set; }
}

static class Program
{
   static void Main() {
      // bad object initialization
      var parent = new Parent() {
         Child = {
            Strings = { "hello", "world" }
         }
      };
   }
}

Вышеуказанная программа компилируется нормально, но вылетает во время выполнения сСсылка на объект не установлена ​​на экземпляр объекта.

Если вы заметили в приведенном фрагменте, у меня естьопущено новое при инициализации дочерних свойств.

Очевидно, правильный способ инициализации:

      var parent = new Parent() {
         Child = new Child() {
            Strings = new List<string> { "hello", "world" }
         }
      };

Мой вопрос: почему компилятор C # не жалуется, когда видит первую конструкцию?

Почему неправильный синтаксис допустимой инициализации?

      var parent = new Parent() {
         Child = {
            Strings = { "hello", "world" }
         }
      };

Ответы на вопрос(5)

Ваш ответ на вопрос