How to Pass a Function as a Parameter in C#
-
Pass a Function as a Parameter With the
Func<>
Delegate inC#
-
Pass a Function as a Parameter Inside Another Function With the
Action<>
Delegate inC#
This tutorial will introduce methods to pass a function as a parameter inside another function in C#.
Pass a Function as a Parameter With the Func<>
Delegate in C#
The Func<T1, T-return>
delegate defines a function with T1
parameter and T-return
return type in C#. We can pass a function as a parameter inside another function with the Func<T1, t-return>
delegate. The following code example shows us how we can pass a function as a parameter inside another function with the Func<>
delegate in C#.
using System;
namespace pass_function_as_parameter {
class Program {
static int functionToPass(int x) {
return x + 10;
}
static void function(Func<int, int> functionToPass) {
int i = functionToPass(22);
Console.WriteLine("i = {0}", i);
}
static void Main(string[] args) {
function(functionToPass);
}
}
}
Output:
i = 32
We defined the function functionToPass(int x)
which takes an integer value as a parameter, increments it with 10
and returns the result as an integer value. We passed the functionToPass()
function as a parameter to the function()
function with the Func<int, int>
delegate. We passed the value 22
to the functionToPass()
function inside the function()
function. In the main function, we called the function with function(functionToPass)
function call. The Func<>
delegate can only be used to pass the functions that return some value.
Pass a Function as a Parameter Inside Another Function With the Action<>
Delegate in C#
If we want to pass a function that does not return a value, we have to use the Action<>
delegate in C#. The Action<T>
delegate works just like the function delegate; it is used to define a function with the T
parameter. We can use the Action<>
delegate to pass a function as a parameter to another function. The following code example shows us how we can pass a function as a parameter inside another function with the Action<>
delegate in C#.
using System;
namespace pass_function_as_parameter {
class Program {
static void functionToPass2(int x) {
int increment = x + 10;
Console.WriteLine("increment = {0}", increment);
}
static void function2(Action<int> functionToPass2) {
functionToPass2(22);
}
static void Main(string[] args) {
function2(functionToPass2);
}
}
}
Output:
increment = 32
We defined the function functionToPass2(int x)
which takes an integer value as a parameter, increments it with 10
and prints the result. We passed the functionToPass2()
function as a parameter to the function()
function with the Action<int>
delegate. We passed the value 22
to the functionToPass2()
function inside the function2()
function. In the main function, we called the function with function2(functionToPass2)
function call. The Action<>
delegate can only be used to pass the functions that do not return any value.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn