Holi Sale. Get upto 40% OFF on Job-oriented Training! Offer Ending in
D
H
M
S
Get Now
Browse Tutorials
C Sharp Generic delegates Func, Action and Predicate with anonymous method

C Sharp Generic delegates Func, Action and Predicate with anonymous method

18 Mar 2024
Advanced
116K Views
5 min read
Learn via Video Course & by Doing Hands-on Labs

C# Programming For Beginners Free Course

Generic delegates in C#: An Overview

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 which means you don’t have to define the delegate statement. These delegates are the Func<T>, Action<T>, and Predicate<T> delegates and are defined in the System namespace. In this C# Tutorial, we will explore more about generic delegates which will include generic delegates with examples, func action predicates with examples, and Generic delegates using an anonymous method.

What are the generic delegates?

  • Delegates are nothing but pointers to function.
  • They are used for implementing events and call-back methods.
  • Func, Action, and Predicate are the delegates defined in C# 3.0
  • Func, Action, and Predicate are generic inbuilt delegates.
  • Let's see the types of delegates with its example in C# Compiler.

1.Func Delegate in C#:

  • Func is a generic delegate present in the System namespace.
  • Func takes one or more input parameters and returns one out parameter and the last parameter is considered as a return value.
  • It can include 0 to 16 input parameters of different types but it must have one return type.

Example:

Func delegate with two input parameters

 Func func1 = DelegateClass.Add;  
int value = func1(22, 44);  
TParameter = 22,44;  
TOutput = value = 66;    

Func delegate with Anonymous Methods

 Func with Anonymous methods:  
Func func= delegate(intx,int y){ return (x+y); };  
int result = func4(2,3);    

2. Action Delegate in C#

  • Action present in the System namespace.
  • It takes one or more than one input parameter and returns nothing.
  • It does not return any value.

Example:

Action delegate with two input parameters

 Action action1=DelegateClass.ShowEmploye;  
action1(44,"Jayanti");  
TParameter = 44,Jayanti;  
TOutput = Not available (No return value)   

Action delegate with Anonymous Methods

 Action action = delegate(String msg)  
{  
    Console.WriteLine(msg);  
};  
action("Jayanti");     

3. Predicate Delegate in C#

  • A predicate delegate is also an inbuilt generic delegate and is present in the System namespace.
  • predicate is used to verify certain criteria of the method and returns output as Boolean, either True or False.
  • The predicate can be used with the method, anonymous, and lambda expressions.

Example:

Predicate delegate with two input parameters

 Predicate predicate = DelegateClass.IsNumeric;
bool number = predicate("987654");

Predicate delegate with Anonymous Methods

 Predicate predicate = delegate(string str)  
{  
    double retNum;  
    bool isNum = Double.TryParse(Convert.ToString(str), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);  
    return isNum;  
};  
bool found = predicate("987654");   

Generic delegates in a nutshell

Action<T> operates on the generic arguments. Func<T> performs an operation on 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.

Read More - C# Interview Questions For Freshers

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); 
} 
}

The above code can be written using a 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 an 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 examples. 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, questions, or comments about this article. Also, Consider our C# Programming Course for a better understanding of all C# concepts.

FAQs

Q1. What is generic delegate func in C#?

The Func Generic Delegate in C# is present in the System namespace.

Q2. What is the difference between action delegate and func delegate?

Programmers use Action delegates when a method does not return a value, and Func delegates when a method returns a value.

Q3. What is an anonymous method in C#?

The anonymous method is useful when the user wants to create an inline method and also wants to pass parameters in the anonymous method like other methods.

Take our free csharp skill challenge to evaluate your skill

In less than 5 minutes, with our skill challenge, you can identify your knowledge gaps and strengths in a given skill.

GET CHALLENGE

Share Article
About Author
Shailendra Chauhan (Microsoft MVP, Founder & CEO at Scholarhat by DotNetTricks)

Shailendra Chauhan is the Founder and CEO at ScholarHat by DotNetTricks which is a brand when it comes to e-Learning. He provides training and consultation over an array of technologies like Cloud, .NET, Angular, React, Node, Microservices, Containers and Mobile Apps development. He has been awarded Microsoft MVP 8th time in a row (2016-2023). He has changed many lives with his writings and unique training programs. He has a number of most sought-after books to his name which has helped job aspirants in cracking tough interviews with ease.
Accept cookies & close this