In C# kann ich eine Liste mit der folgenden Syntax initialisieren.
List<int> intList= new List<int>() { 1, 2, 3 };
Ich würde gerne wissen, wie das {}
Syntax funktioniert, und ob es einen Namen hat. Es gibt einen Konstruktor, der ein IEnumerable
könnte man das nennen.
List<int> intList= new List<int>(new int[]{ 1, 2, 3 });
Das scheint eher "Standard" zu sein. Wenn ich den Standardkonstruktor für die Liste dekonstruiere, sehe ich nur
this._items = Array.Empty;
Ich würde dies gerne tun können.
CustomClass abc = new CustomClass() {1, 2, 3};
Und in der Lage sein, die 1, 2, 3
Liste. Wie funktioniert das?
Update
Jon Skeet antwortete
Es ruft die Par Konstruktor und ruft dann Add auf:
List<int> tmp = new List<int>(); tmp.Add(1); tmp.Add(2); tmp.Add(3); List<int> intList = tmp;
Ich verstehe, was es bewirkt. Ich möchte wissen, wie. Woher weiß diese Syntax, dass sie die Methode Add aufrufen soll?
Update
Ich weiß, es ist klischeehaft, eine Antwort von Jon Skeet zu akzeptieren. Aber das Beispiel mit den Strings und Ints ist genial. Auch eine sehr hilfreiche MSDN-Seite ist: