C# Action & Func
Action objects return no values. The Action type in the C# language is similar to a void method.
using System;
class Program
{
static void Main()
{
// Example Action instances.
// ... First example uses one parameter.
// ... Second example uses two parameters.
// ... Third example uses no parameter.
// ... None have results.
Action<int> example1 =
(int x) => Console.WriteLine("Write {0}", x);
Action<int, int> example2 =
(x, y) => Console.WriteLine("Write {0} and {1}", x, y);
Action example3 =
() => Console.WriteLine("Done");
// Call the anonymous methods.
example1.Invoke(1);
example2.Invoke(2, 3);
example3.Invoke();
}
}
Output
Write 1
Write 2 and 3
Done
Func handles many arguments. The Func type is a parameterized type. We specify the number and kinds of parameters, and the type of the return value. The Func type provides a way to store anonymous methods in a generalized and simple way.
using System; class Program { static void Main() { // // Create a Func instance that has one parameter and one return value. // ... Parameter is an integer, result value is a string. // Func<int, string> func1 = (x) => string.Format("string = {0}", x); // // Func instance with two parameters and one result. // ... Receives bool and int, returns string. // Func<bool, int, string> func2 = (b, x) => string.Format("string = {0} and {1}", b, x); // // Func instance that has no parameters and one result value. // Func<double> func3 = () => Math.PI / 2; // // Call the Invoke instance method on the anonymous functions. // Console.WriteLine(func1.Invoke(5)); Console.WriteLine(func2.Invoke(true, 10)); Console.WriteLine(func3.Invoke()); } } Output string = 5 string = True and 10 1.5707963267949The first Func receives an int and returns a string and it is declared as Func<int, string>. The second receives a bool and an int and returns a string. It is declared as Func<bool, int, string>. The third simply returns a value.
留言