Extension Method in C#

Extension Method

An Extension Method is one kind of static method and having public access modifier so you can use it anywhere.

As code you will see is more similar like an instance method but there are two things which separate extension method and instance method.

  1. Static keyword
  2. this keyword in parameter.

In visual studio you can see Extension Method display with icon of DOWN ARROW.

Its better to use extension method as compare to instance method.

We will implement one method which check given value is EVENT value or not, which return the TRUE or FALSE.

Traditional Instance Method Class called MyInstanceMethodClass,

  1. public class MyInstanceMethodClass  
  2. {  
  3.     public static bool IsEvenNumber(int CheckNumber)  
  4.     {  
  5.         bool result = false;  
  6.         result = (CheckNumber % 2 == 0);  
  7.         return result;  
  8.     }  
  9. }   
Extension Method Class called MyExtensionMethodClass,
  1. public static class MyExtensionMethodClass  
  2. {  
  3.     public static bool IsEvenNumber(this int CheckNumber)   
  4.     {  
  5.         bool result = false;  
  6.         result = (CheckNumber % 2 == 0);  
  7.         return result;  
  8.     }  
  9. }  
Use of Instance Method Classes,
  1. int FirstNumber = 11;  
  2. bool CheckFirstNumber = MyInstanceMethodClass.IsEvenNumber(FirstNumber); 
Use of Extension Method Class,
  1. int SecondNumber = 12;  
  2. bool CheckSecondNumber = SecondNumber.IsEvenNumber();  
Difference between Instance Method and Extension Method

Instance MethodExtension Method
1. Instance Method is classical method of calling any method.1. New concept which introduced in .NET version 3.0 C#.
2. Instance method compulsory to call with class name.

Example:
MyInstanceMethodClass.IsEvenNumber(FirstNumber);
2. Extension method no need to call with class name.

Example:
SecondNumber.IsEvenNumber();
3. You can override Instance Method.3. You can not override extension method.

We had implemented example in Console Application:

Program.cs code

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6. namespace ExtensionMethodConsoleApplication  
  7. {  
  8.     class Program   
  9.     {  
  10.         static void Main(string[] args)  
  11.       {  
  12.             int FirstNumber = 11;  
  13.             bool CheckFirstNumber = MyInstanceMethodClass.IsEvenNumber(FirstNumber);  
  14.             Console.WriteLine("First Number is 11 IsEvenNumber Check Return Value " + CheckFirstNumber.ToString());  
  15.             Console.WriteLine();  
  16.             Console.WriteLine();  
  17.             int SecondNumber = 12;  
  18.             bool CheckSecondNumber = SecondNumber.IsEvenNumber();  
  19.             Console.WriteLine("Second Number is 12 IsEvenNumber Check Return Value " + CheckSecondNumber.ToString());  
  20.             Console.WriteLine();  
  21.             Console.ReadKey();  
  22.         }  
  23.     }  
  24.     public class MyInstanceMethodClass   
  25.     {  
  26.         public static bool IsEvenNumber(int CheckNumber)  
  27.         {  
  28.             bool result = false;  
  29.             result = (CheckNumber % 2 == 0);  
  30.             return result;  
  31.         }  
  32.     }  
  33.     public static class MyExtensionMethodClass   
  34.     {  
  35.         public static bool IsEvenNumber(this int CheckNumber)  
  36.         {  
  37.             bool result = false;  
  38.             result = (CheckNumber % 2 == 0);  
  39.             return result;  
  40.         }  
  41.     }  
  42. }  

 

Output:

output