Using an extension method for collection C# with Example
initialization Collection initialization syntax can be used when instantiating any class which implements IEnumerable and has a method named Add which takes a single parameter. In previous versions, this Add method had to be an instance method on the class being initialized. In C#6, it can also be an extension method. public class CollectionWithAdd : IEnumerable { public void Add(T item) { Console.WriteLine("Item added with instance add method: " + item); } public IEnumerator GetEnumerator() { // Some implementation here } } public class CollectionWithoutAdd : IEnumerable { public IEnumerator GetEnumerator() { // Some implementation here } } public static class Extensions { public static void Add(this CollectionWithoutAdd collection, T item) { Console.WriteLine("Item added with extension add method: " + item); } } public class Program { public static void Main() { var collection1 = new CollectionWithAdd{1,2,3}; // Valid in all C# versions var collection2 = new CollectionWithoutAdd{4,5,6}; // Valid only since C# 6 } } This will output: Item added with instance add method: 1 Item added with instance add method: 2 Item added with instance add method: 3 Item added with extension add method: 4 Item added with extension add method: 5 Item added with extension add method: 6