The .NET framework comes with a set of inbuilt classes and types which we use
extensively in our applications. Integer, string, float etc are some of these
which are very frequently used. These come with a set of predefined methods and
properties. Lets say we declare a string variable in our program, we can use a
list of methods that are provided by the .NET framework within it.
Suppose we have to execute a custom method on any string object for a number of
times in our code. Wouldn't it be great if we could just execute it as
any_string_object.ourCustomMethod().
Extension methods help us achieve exactly this. Without using Inheritance, we can
extend the existing classes to add our own methods.
Lets say we have a integer and we need to check : if the interger is <100, the
integer is divisible by 2. We'll write an extension method for this.
The extension method is written inside a static class and the method is also defined
as static. Though it is defined as a static method it is still invoked on a
particular instance. Below is the code for the extension method isAllowed()
The "this" keyword tells that the method should be associated with the type
specified ahead of it. In this case it is INT
Here the extension method is invoked on the variable that we have read through
the console. We can use this method on any other integer variable in the
program.
The result of the program is :
Extension methods cannot be used to override existing methods and these can be
applied only to add extension methods. We cannot create properties using the
above concept.