Extension Methods in C# - CodeProject
Extension Methods in C# - CodeProject
http://www.codeproject.com/Articles/34209/Extension-Methods-in-C?display=Print 1/4
Articles Languages C# General
Extension Methods in C#
By Moustafa Arafa, 17 Mar 2009
Introduction
In this article, I would like to introduce one of the new C# 3.0 enhancements Extension Methods and so on.
This feature is available in C # 3.0 compilers and further versions (C# 4.0); this feature is very important for all
developers especially if you would like to use the dynamism of the C# enhancements to take place in your
class design.
Why Do We Need Extension Methods?
While designing your classes in .NET projects, we used to have sibling classes which do simple operation from
its parent classes to add a kind of customization for parents methods. Suppose that you want to extend int
class in .NET by adding a factorial method to it using recursion technique.
One way of thinking is to inherit int class and add your new method to it and use your new methods in your
code. This is a valid solution but let us see what extension methods can provide us.
Using extension methods, you can use your new methods as a part of int class in .NET.
In the above screen shot, I wrote the following line of code:
int x = 3;
x.factorial();
Factorial method becomes a part of int class by implementing factorial method as an extension method
in my class without inheriting int class in .NET, see below (Figure 1.1).
4.52 (34 votes)
6/10/2014 Extension Methods in C# - CodeProject
http://www.codeproject.com/Articles/34209/Extension-Methods-in-C?display=Print 2/4
Figure 1.1 of extension method
Whats the Specification of an Extension Method?
An extension method is a special kind of static method that allows you to add new methods to existing
types without creating derived types.
The extension methods are called as if they were instance methods from the extended type, For example: x is
an object from int class and we called it as an instance method in int class.
How to Create my Extension Method?
Simply, you create your own static method in your class and put this keyword in front of the first
parameter in this method (the type that will be extended).
public static class MyMathExtension
{
public static int factorial(this int x)
{
if (x <= 1) return 1;
if (x == 2) return 2;
else
return x * factorial(x - 1);
}
}
Complete Code for My Demo
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int x = 3;
Console.WriteLine(x.factorial());
Console.ReadLine();
}
}
public static class MyMathExtension
{
public static int factorial(this int x)
{
if (x <= 1) return 1;
if (x == 2) return 2;
else
6/10/2014 Extension Methods in C# - CodeProject
http://www.codeproject.com/Articles/34209/Extension-Methods-in-C?display=Print 3/4
return x * factorial(x - 1);
}
}
}
General Tips in Extension Methods Usage
This section is optional reading section for understanding the core idea of extension methods:
a. This keyword has to be the first parameter in the extension method parameter list.
b. Extension methods are used extensively in C# 3.0 and further version specially for LINQ extensions in
C#, for example:
int[] ints = { 10, 45, 15, 39, 21, 26 };
var result = ints.OrderBy(g => g);
Here, order by is a sample for extension method from an instance of IEnumerable<T> interface, the
expression inside the parenthesis is a lambda expression.
c. It is important to note that extension methods can't access the private methods in the extended
type.
d. If you want to add new methods to a type, you don't have the source code for it, the ideal solution is to
use and implement extension methods of that type.
e. If you create extension methods that have the same signature methods inside the type you are
extending, then the extension methods will never be called.
Conclusion
In this article, I have stated the use and the benefits we will gain by using extension methods in C# which is
available starting from C# 3.0 and further versions of C#.
Its important to make note of the tips I have mentioned in the article while you implement your extension
methods.
History
17
th
March, 2009: Initial post
License
This article, along with any associated source code and files, is licensed under The Code Project Open License
(CPOL)