Please enable Javascript to correctly display the contents on Dot Net Tricks!

C Sharp Extension method

  Author : Shailendra Chauhan
Updated On : 28 May 2014
Total Views : 95,813   
 

An extension method is a static method of a static class that can be invoked using the instance method syntax. Extension methods are used to add new behaviors to an existing type without altering. In extension method "this" keyword is used with the first parameter and the type of the first parameter will be the type that is extended by extension method.

Conceptually, extension methods provides as an implementation of the decorator structural pattern. At compile time an extension method call is translated into an ordinary static method call.

A simple Extension Method Example

//defining extension method
public static class MyExtensions
{
 public static int WordCount(this String str)
 {
 return str.Split(new char[] { ' ', '.', ',' }).Length;
 }
} 

class Program
{
 public static void Main()
 {
 string s = "Dot Net Tricks Extension Method Example";
 
 //calling extension method
 int i = s.WordCount();

 Console.WriteLine(i);
 }
}
//output:
6

Extension Methods Chaining

Like as instance methods, extension methods also have chaining capability.

 public static class ExtensionClass
{
public static string Pluralize (this string s) {...}
public static string Capitalize (this string s) {...}
}
//we can do chainig of above methods like as
string x = "Products".Pluralize().Capitalize(); 

Ambiguity, resolution and precedence of extension method

To use an extension method, it should be in same scope of class.If two extension methods have the same signature,the more specific method takes precedence.

 static class StringExtension
{ // first method
 public static bool IsCapitalized (this string s) {...}
}
static class ObjectExtension
{
 // second method
 public static bool IsCapitalized (this object s) {...}
}
// code here
// first method is called
bool flag1 = "Dotnet-Tricks".IsCapitalized(); 
// second method is called
bool test2 = (ObjectHelper.IsCapitalized ("Dotnet-Tricks")); 

Key points about extension methods

  1. An extension method is defined as static method but it is called like as instance method.

  2. An extension method first parameter specifies the type of the extended object, and it is preceded by the "this" keyword.

  3. An extension method having the same name and signature like as an instance method will never be called since it has low priority than instance method.

  4. An extension method couldn't override the existing instance methods.

  5. An extension method cannot be used with fields, properties or events.

  6. The compiler doesn't cause an error if two extension methods with same name and signature are defined in two different namespaces and these namespaces are included in same class file using directives. Compiler will cause an error if you will try to call one of them extension method.

Summary

In this article I try to explain extension method and its various use with example. I hope after reading this article you will be able to use this trick in LINQ query. I would like to have feedback from my blog readers. Please post your feedback, question, or comments about this article.


YOU MIGHT LIKE
Free Interview Books
 
COMMENTS (0)
13 FEB
ASP.NET Core Development (online)

07:00 AM-09:00 AM IST( MON, WED, FRI)

Know More
25 JAN
Angular2 and Angular1 Development (online)

09:00 PM-10:30 PM IST(MON-FRI)

Know More
24 JAN
ASP.NET MVC with Angular2 Development (online)

07:00 AM-09:00 AM IST(Tuesday & Thursday)

Know More
20 JAN
NODEJS & MEAN Stack 2 Development (online)

09:00 PM-11:00 PM IST( MON, WED, FRI)

Know More
15 JAN
PPC Marketing (offline)

04:00 PM-05:300 PM

14 JAN
Xamarin Forms : Build Cross-platform Apps (offline)

05:00 PM-06:30 PM IST

10 JAN
ASP.NET MVC with AngularJS Development (online)

09:00 PM-11:00 PM IST on (TUE, THRU,SAT)

3 JAN
ASP.NET MVC with AngularJS Development (online)

07:00 AM-09:00 AM IST

31 DEC
ASP.NET MVC with AngularJS Development (offline)

09:30 AM-11:00 AM

31 DEC
Angular2 and Angular1 Development (offline)

11:00 AM-12:30 AM

26 NOV
ASP.NET MVC with AngularJS Development (offline)

03:00 PM-04:30 PM

5 NOV
ASP.NET MVC with AngularJS Development (offline)

08:00 AM-09:30 AM

4 SEP
MEAN Stack 2 Development (offline)

11:00 AM-12:30 PM.

BROWSE BY CATEGORY
 
RECENT ARTICLES
SUBSCRIBE TO LATEST NEWS
 
LIKE US ON FACEBOOK
 

Professional Speaks

+