Initialisierer der leeren Auflistung für Listeneigenschaft führt zu null

Wenn ich diesen Code ausführen, es wird nicht initialisiertThisIsAList zu einer leeren Sammlung, wie ich erwartet hatte ... stattdessenThisIsAList war null.

void Main()
{
    var thing = new Thing
    {
        ThisIsAList = {}
    };

    Console.WriteLine(thing.ThisIsAList == null); // prints "True"
}

public class Thing
{
    public List<string> ThisIsAList { get; set; }
}

Warum ist das kein Kompilierungsfehler? Warum ist das Ergebnisnull?

Ich habe mich gefragt, ob hier möglicherweise eine implizite Konvertierung stattfindet, aber die folgenden Versuche haben zu Kompilierungsfehlern geführt:

thing.ThisIsAList = Enumerable.Empty<string>().ToArray();
List<int> integers = { 0, 1, 2, 3 };

Nach MSDN-Dokumentation amcollection initializers, es klingt wie ein Auflistungsinitialisierer behandelt im Grunde nur den Aufruf vonAdd() für dich. Also habe ich nach möglichen Überladungen gesucht, umList.Add, habe aber nichts gefunden, von dem ich denke, dass es zutreffen würde.

Kann jemand erklären, was hier in der C # -Spezifikation vor sich geht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage