as Initialisieren der Listeneigenschaft ohne "neue Liste" führt zu einer NullReferenceExceptio

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" }
         }
      };
   }
}

Das obige Programm kompiliert gut, stürzt aber zur Laufzeit mit @ Object-Referenz nicht auf eine Instanz des Objekts gesetzt.

Wenn Sie im obigen Ausschnitt bemerken, habe ichomitted new beim Initialisieren der untergeordneten Eigenschaften.

Offensichtlich ist der richtige Weg zum Initialisieren:

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

Meine Frage ist, warum sich der C # -Compiler nicht beschwert, wenn er das erste Konstrukt sieht.

Warum ist die Syntax für die Initialisierung ungültig?

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

Antworten auf die Frage(10)

Ihre Antwort auf die Frage