Why does a collection initializer expression require IEnumerable to be implemented?

An object initializer doesn’t; a collection initializer does. It’s so that it’s applied to classes which really represent collections, rather than just arbitrary ones which have an Add method. I have to admit that every so often I’ve “implemented” IEnumerable explicitly, just to allow collection initializers – but thrown a NotImplementedException from GetEnumerator().

Note that early in C# 3’s development, collection initializers had to implement ICollection<T>, but that was found to be too restrictive. Mads Torgersen blogged about this change, and the reason behind requiring IEnumerable, back in 2006.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)