We used delegate a lot in some or the other way. Like we know, the event base model that we use in Windows as web programming, is based on delegate only. I am in the habit of using delegates often. In the last few days, I found a very elegant way to use the delegate. I was in the habit of using only generic delegates that allows us type safety and a lot more flexibility.
In our traditional programming, we use the delegate as in the following steps:
- Declaring the delegate
- Creating object of the delegate and assigning it to the appropriate function
- Calling the delegate
Let's see the code:
.NET 2.0 introduced one generic delegate
Action which takes a single parameter and returns nothing. Its declaration is:
Public delegate void Action<T1>(T1 t1)
This is a very elegant way to use the delegate.
And C# 3.0 introduced 4 delegates which are as follows:
Public delegate void Action()
Public delegate void Action<T1,T2>(T1 t1,T2 t2)
Public delegate void Action<T1,T2,T3>(T1 t1,T2 t2,T3 t3)
Public delegate void Action<T1,T2,T3,T4>(T1 t1,T2 t2,T3 t3),T4 t4)
Let's see them running.
As from the code, we can also see that
Action delegate also provides a method
invoke to call the method.
Action delegates can also be used with Anonymous methods as:
They can also be used with lambda function. Let's see:
So code diligently and efficiently.
ForEach<T> methods each take an
Action<T> delegate as a parameter. The method encapsulated by the delegate allows us to perform an action on each element in the array or list.