1.Action和Func
Action委托表示一个void返回类型的方法
Func委托表示一个带返回类型的方法
在 C# 中,Action
和 Func
是泛型委托类型,它们用于定义函数的签名和参数类型。这两个类型都经常与 Lambda 表达式一起使用,以提供一种简洁的方式来传递和执行函数/方法。
Action:
Action
是一个没有返回值的泛型委托类型,它可以接受零到 16 个参数。Action
可用于表示将执行某些操作但没有返回值的方法或 Lambda 表达式。- 例如,
Action<int, string>
表示一个接受一个整数和一个字符串参数的方法或 Lambda 表达式,但没有返回值。
示例:
// 使用 Action 执行一个没有参数和返回值的操作
Action operation = () =>
{
Console.WriteLine("Operation executed.");
};
// 使用 Action 执行一个接受参数但没有返回值的操作
Action<int, string> printMessage = (count, message) =>
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(message);
}
};
// 调用 Action
operation(); // 输出: Operation executed.
printMessage(3, "Hello!"); // 输出: Hello! Hello! Hello!
Func:
Func
是一个带有返回值的泛型委托类型,它可以接受零到 16 个输入参数,并返回一个结果。Func
可用于表示具有指定参数和返回类型的方法或 Lambda 表达式。- 最后一个类型参数表示返回类型。
示例:
// 使用 Func 表示一个没有参数但返回整数的方法或 Lambda 表达式
Func<int> generateRandomNumber = () =>
{
Random random = new Random();
return random.Next();
};
// 使用 Func 表示一个接受字符串参数并返回长度的方法或 Lambda 表达式
Func<string, int> getStringLength = (str) => str.Length;
// 调用 Func
int randomNumber = generateRandomNumber(); // 生成一个随机数
int length = getStringLength("Hello"); // 获取字符串 "Hello" 的长度
Console.WriteLine(randomNumber); // 输出随机数
Console