Introduction
Extension methods are a new feature in C# 3.0. An extension method enables us to add methods to existing types without creating a new derived type, recompiling, or modify the original types. We can say that it extends the functionality of an existing type in .NET. An extension method is a static
method to the existing static
class. We call an extension method in the same general way; there is no difference in calling.
Feature and Property of Extension Methods
The following list contains basic features and properties of extension methods:
- It is a
static
method.
- It must be located in a
static
class.
- It uses the "
this
" keyword as the first parameter with a type in .NET and this method will be called by a given type instance on the client side.
- It also shown by VS intellisense. When we press the dot (.) after a type instance, then it comes in VS intellisense.
- An extension method should be in the same namespace as it is used or you need to import the namespace of the class by a
using
statement.
- You can give any name for the class that has an extension method but the class should be
static
.
- If you want to add new methods to a type and you don't have the source code for it, then the solution is to use and implement extension methods of that type.
- If you create extension methods that have the same signature methods as the type you are extending, then the extension methods will never be called.
Using the Code
We create an extension method for a string
type so string
will be specified as a parameter for this extension method and that method will be called by a string
instance using the dot operator.
In the above method WordCount()
, we are passing a string
type with this so it will be called by the string
type variable, in other words a string
instance.
Now we create a static
class and two static
methods, one for the total word count in a string
and another for the total number of characters in a string
without a space.
using System;
namespace ExtensionMethodsExample
{
public static class Extension
{
public static int WordCount(this string str)
{
string[] userString = str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries);
int wordCount = userString.Length;
return wordCount;
}
public static int TotalCharWithoutSpace(this string str)
{
int totalCharWithoutSpace = 0;
string[] userString = str.Split(' ');
foreach (string stringValue in userString)
{
totalCharWithoutSpace += stringValue.Length;
}
return totalCharWithoutSpace;
}
}
}
Now we create an executable program that has a string
as an input and uses an extension method to count the total words in that string
and the total number of characters in that string
then show the result in a console screen.
using System;
namespace ExtensionMethodsExample
{
class Program
{
static void Main(string[] args)
{
string userSentance = string.Empty;
int totalWords = 0;
int totalCharWithoutSpace = 0;
Console.WriteLine("Enter the your sentance");
userSentance = Console.ReadLine();
totalWords = userSentance.WordCount();
Console.WriteLine("Total number of words is :"+ totalWords);
totalCharWithoutSpace = userSentance.TotalCharWithoutSpace();
Console.WriteLine("Total number of character is :"+totalCharWithoutSpace);
Console.ReadKey();
}
}
}