Я искал инициализаторы коллекции С# и нашел реализацию очень прагматичной, но также очень не похожей на что-либо еще в С#
Я могу создать такой код:
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) { }
}
Так как я выполнил минимальные требования для компилятора (реализованы IEnumerable
и a public void Add
), это работает, но, очевидно, не имеет значения.
Мне было интересно, что помешало команде С# создать более строгий набор требований? Другими словами, почему для компиляции этого синтаксиса компилятор не требует, чтобы реализация типа ICollection
? Это больше похоже на дух других функций С#.