For the past few days, I was thinking about how Microsoft added a new method in existing classes of Visual Studio. I was surprised because I was creating
List<>
and I was showing me some LINQ methods, but when I commented “
Using System.Linq
” line, it was showing me default list methods.
But when comment “
Using System.Linq
” was removed, Visual Studio was showing me some Linq methods in the intelligence window.
Then I started searching on the web for information about it. I found a new exciting feature of framework 3.0, which is “Extension Methods”. You can extend existing classes without inheritance using extension methods. There are some things which you should keep in mind while writing extension methods.
- You cannot override an existing method by writing an extension method.
- If an extension method has the same name as instance method, then it will not be called, because the priority of instance method is high. At compile time, extension method has low priority.
- You can write an extension for Properties, data Members and events.
It is very simple to write an extension method. Create a
static
class and write
static
extension method in this class. The “
this
” keyword in the parameters tells the compiler to add the extension method in the type after “
this
” keyword. In my example, “
this string
” compiler adds extension method to the
string
class.
namespace ExtensionTest
{
public static class ExtensionOfString
{
public static bool IsNumber(this string value)
{
Regex expression = new Regex(@"^[0-9]([\.\,][0-9]*)?$");
return expression.IsMatch(value);
}
}
}
Here is an example to use extension method. Include the namespace and call your extension method like the original method of the instance.
using ExtensionTest;
. . . . .
string number = "4";
bool isNumber = number.IsNumber();
You can see how easy it is to write an extension method in .NET.