Most favorite things about C# 3.0 compilers is the extension methods. Extension methods allow us to extend an Existing Type without deriving ,modifying or recompiling it.If you ever worked with LINQ then I am sure you are already used the extension methods because LINQ holds bunch of extension methods.here is how visual studio indicate the extension methods with an existing type.
extension methods greatly simplify the methods call.Actually An extension method is static method existing in a static class.Before diving into the detail let’s create an extension methods which will reverse the order of words inside a given sentence.
here is how you will use it.
basically it is just a syntactic sugar,at compile time this methods call is turned into an ordinary static method call
Specification of an Extension Methods.
- Extension method must be a static method.
- It must be located inside a static class.
- Extension method’s first parameter specifies the type of the extended object, and it must preceded by the “this” keyword.
- Extension method should be in the same namespace if namespace is different then we need to include the namespace
- An extension method couldn’t override the existing instance methods.
Now i would share some helpful extension methods
This is common practice when we want to convert a string into integer and if there is exception then assign a default value in order to deal with this situation i have written some extension methods which beautifully converts a given string into primitive types like int , long short and gracefully handle above exception see an example here.
in this above extension method we try to convert a string into int? if there is an exception we will return simply nullable Int so let the caller to handle the NULL Exception and here is how you can use it.
in this above example we are using ?? operator called null-coalescing operator It returns the left-hand operand if the operand is not null; otherwise it returns the right hand operand.
See below even more examples
You can fork the complete library on github