c#中Action<T>和Func<T>委托

本文介绍了C#中泛型委托Action与Func的使用方法。Action委托用于引用无返回值的方法,Func委托则用于引用有返回值的方法。两者均可接受至多16个参数类型,并支持静态与非静态方法调用。

泛型Acion<T>委托表示引用一个void返回类型的方法,至多可以传递至16个参数类型,没有泛型的Action类可调用没有参数的方法,如

class Test
{
        public static void show()
        {
                 Console.WriteLine("show");
        }
	static void Main(string[] args)
	{
		Action ac = show;
                ac();
	}
}

泛型Func<T>委托表示引用带返回类型的方法,至多可以传递16个参数类型和一个返回类型,Func<in T1,int T2,...,out TResult>

public static double add(double a,int b)
{return a+b;}

Func<duuble,int,doulbe> f=类名.add;

没有参数时

public static string GetName()
{return "name";}
Func<string> f=类名.GetName;

对应非静态方法

Func<string> f=对象名.GetName;


 
`Func<T, TResult>` `Action<T>` 都是 C# 中的委托类型,但它们的设计用途返回值方面存在关键区别。 ### 区别: 1. **返回值**: - `Func<T, TResult>` 是一个委托类型,它表示一个方法,该方法接受指定类型的参数并返回一个结果。最后一个泛型参数是返回值的类型。 - `Action<T>` 也是一个委托类型,但它表示一个没有返回值的方法(即返回类型为 `void`)。 2. **泛型参数**: - `Func<T, TResult>` 至少需要两个泛型参数:输入参数类型返回值类型。 - `Action<T>` 只需要一个或多个输入参数类型,不需要返回值类型。 3. **使用场景**: - 当你需要传递一个有返回值的函数时,使用 `Func<T, TResult>`。 - 当你需要传递一个无返回值的函数时,使用 `Action<T>`。 --- ### 示例代码: ```csharp using System; class Program { static void Main() { // 使用 Func<T, TResult> Func<int, int> square = x => x * x; Console.WriteLine("Square of 5: " + square(5)); // 输出 25 // 使用 Action<T> Action<string> greet = name => Console.WriteLine($"Hello, {name}!"); greet("World"); // 输出 Hello, World! } } ``` --- ### 解释: - 在上面的例子中,`Func<int, int>` 定义了一个接受一个整数并返回一个整数的函数。我们用它来计算平方。 - `Action<string>` 定义了一个接受字符串作为参数但不返回任何值的函数。我们用它来打印问候语。 --- ### 总结: - 如果你需要一个函数有返回值,使用 `Func<T, TResult>`。 - 如果你只需要执行某些操作而不需要返回值,使用 `Action<T>`。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值