Posted By : Shailendra Chauhan, 20 Jun 2012
Updated On : 22 Feb 2013
In .net 3.5 some new generic delegates -Func<T>, Action<T> and Predicate<T> were introduced. Using generic delegates, it is possible to concise delegate type means you don’t have to define the delegate statement. These delegates are the Func<T>, Action<T> and Predicate<T> delegates and defined in the System namespace.
Action<T> performs an operation on the generic arguments. Func<T> performs an operationon the argument(s) and returns a value, and Predicate<T> is used to represent a set of criteria and determine if the argument matches the criteria.
delegate TResult Func ();
delegate TResult Func (T arg);
delegate TResult Func (T1 arg1, T2 arg2);
... up to T16
delegate void Action ();
delegate void Action (T arg);
delegate void Action (T1 arg1, T2 arg2);
... up to T16
Here "in" shows the input parameters and "out" shows the return value by the delegate.
Generic delegate example
using System;
class demo
{
delegate void MyDelegate(string str);
static void Main(string[] args)
{
MyDelegate d = show;
d("Hello World!");
Console.ReadLine();
}
static void show(string str)
{
Console.WriteLine(str);
}
} Above code can be written as using generic delegate.
using System;
class demo
{
static void Main(string[] args)
{
Action<string> d = show;
d("Hello World!");
Console.ReadLine();
}
static void show(string str)
{
Console.WriteLine(str);
}
} Generic delegate using anonymous method
using System;
class demo
{
static void Main(string[] args)
{
Action<string> d = s => Console.WriteLine(s);
d("Hello World!");
}
} Summary
In this article I try to explain the generic delegates with example. I hope after reading this article you will be able to understand the use of generic delegates. I would like to have feedback from my blog readers. Please post your feedback, question, or comments about this article.