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