我一直在尋找在C#集合初始化,發現實施是非常務實的,但也很不像在C#別的爲什麼C#集合初始化器以這種方式工作?
我可以這樣創建代碼:
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
和public void Add
)這個工作,但顯然沒有價值。
我想知道是什麼阻止了C#團隊創建一組更嚴格的要求?換句話說,爲了編譯此語法,編譯器不要求該類型實現ICollection
?這似乎更符合其他C#特性的精神。
請注意Web開發人員:如果您試圖將該類的實例序列化爲JSON(實現IEnumerable會導致序列化程序遍歷該對象),將引發NotImplementedException – diachedelic 2012-08-28 06:10:34