Extension methods enable you to “add” methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. Extension methods are static methods, but they’re called as if they were instance methods on the extended type. see the official website.
Let’s see one simple example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | using System; using System.Linq; using System.Collections.Generic; public static class ExtensionMethods { //public static IEnumerable<T> Filter<T>(this IEnumerable<string> myArray) //public static int[] Filter(this IEnumerable<string> someArray) public static IEnumerable<int> Filter(this IEnumerable<string> someArray, Func<int,bool> func) { return someArray.Select(i => Convert.ToInt32(i)).Where(i => func(i)); } } public class Program { public static void Main() { // https://www.youtube.com/watch?v=v_cgQzp8YHQ Console.WriteLine("Hello World"); /* Extension methods let us add methods to existing types without creating a new derivated type */ var myArray = new int[] {1,2,3,4,5,6,7,8,9}; // Where is a extension method var evenNumbers1 = myArray.Where(x => x % 2 == 0); Console.WriteLine($"Even numbers1 are : {string.Join(',' , evenNumbers1)}"); var evenNumbers2 = myArray.Select(x => $"Item number : {x}"); Console.WriteLine($"Even numbers2 are : {string.Join(',' , evenNumbers2)}"); // use an class extension method var myArrayString = new string[] {"1","2","3"}; var evenNumbers3 = myArrayString.Filter(x => x > 1).Select(x => $"Item number: {x}"); Console.WriteLine($"Even numbers3 are : {string.Join(',' , evenNumbers3)}"); } } |
In this example, you can see three extension methods: one is the two methods Where and Select and one is defined by my class ExtensionMethods.
The result of this source code in C# is:
1 2 3 4 | Hello World Even numbers1 are : 2,4,6,8 Even numbers2 are : Item number : 1,Item number : 2,Item number : 3,Item number : 4,Item number : 5,Item number : 6,Item number : 7,Item number : 8,Item number : 9 Even numbers3 are : Item number: 2,Item number: 3 |
You can see the running source code in C# online at this online tool.