Ich war auf der Suche auf C# Auflistungsinitialisierer und fand die Umsetzung sehr pragmatisch sein, aber auch sehr anders als alles andere in C#Warum funktionieren C# -Auflistungsinitialisierer so?
ich in der Lage bin Code wie folgt zu erstellen:
using System;
using System.Collections;
class Program
{
static void Main()
{
Test test = new Test { 1, 2, 3 };
}
}
class Test : IEnumerable
{
public IEnumerator GetEnumerator()
{
throw new NotImplementedException();
}
public void Add(int i) { }
}
Da ich die zufrieden Mindestanforderungen für den Compiler (implementiert IEnumerable
und public void Add
) funktioniert das aber hat offensichtlich keinen Wert.
Ich fragte mich, was verhinderte, dass das C# -Team strengere Anforderungen stellte? Mit anderen Worten, warum benötigt der Compiler für die Kompilierung dieser Syntax nicht, dass der Typ ICollection
implementiert? Das scheint eher im Geiste anderer C# -Features zu liegen.
Nur eine Anmerkung für Webentwickler: NotImplementedException wird ausgelöst, wenn Sie versuchen, eine Instanz dieser Klasse zu JSON zu serialisieren (die Implementierung von IEnumerable führt dazu, dass der Serialisierer das Objekt iteriert) – diachedelic