C# 委托,匿名函数,匿名委托,lambda,Action<>,Func<>,Predicate<>

本文详细介绍了C#中的委托概念,包括如何使用delegate定义委托,以及委托如何像抽象类一样实现多态。接着探讨了匿名函数和匿名委托的简化作用,以及lambda表达式的便捷性,它是一种无名的方法简写形式。最后,文章讨论了Action、Func和Predicate这三种常用的泛型委托,它们分别用于无返回值、有返回值和返回bool类型的方法。Func使得定义委托和赋值方法的过程更加简洁,与lambda结合使用,可以将三步操作合为一步。
摘要由CSDN通过智能技术生成

c# 委托 delegate
C#中的lambda表达式
C#中的Func委托

委托

  • 委托类似于一个方法,前面加上delegate,有名字、有参数(),但没有方法体{}。
  • 它就是一个百变软泥怪,可以被赋予任何一个方法(结构要一致的),然后他就变成这个方法了。
  • 他有点类似于abstract的抽象类的感觉,自己不实现方法,通过实例化来实现具体不同方法。

匿名函数

  • 匿名委托是为了简化委托,简化了“初始化委托变量,将方法与委托关联起来”这个过程。

lambda

  • lambda表达式是为了简化匿名委托。
  • 匿名委托和lambda表达式本身都是一个方法来的,但他们都没有名字,所以没法直接调用,要用就只能调用其委托。
  • lambda表达式可以说是一种方法的变体,方法的简写缩写方式,将方法的参数()和方法体{}单独拿出来。感觉是一次性的用法,别的地方不再调用了,只用在这一个地方,所以直接在用的地方写出来,名字也没有,也不打算别的地方调用。

Action<>,Func<>,Predicate<>

  • Action是无返回值的泛型委托
  • Func是有返回值的泛型委托
  • Predicate<>是返回bool类型的委托
  • 他们都有多个参数的重载版本
  • 如果说lambda是为了简化委托的后半部分方法体的初始化,那么Func他们就是为了简化委托的定义部分(前半部分)。
public delegate int DelegateProcess(int num1, int num2);

//第一种写法
DelegateProcess process= new DelegateProcess(Multiply);

//第二种写法
DelegateProcess process= Multiply;

//第三种写法  匿名委托
DelegateProcess process= delegate(int a,int b)
{
   return a*b;
}

//第四种写法 Lamdba表达式
DelegateProcess process =((int a,int b)=>{return a*b;});

//第五种写法 Action<T>和Func<T>
Action<int,int> process= ((int a,int b)=>{Console.WriteLine(a * b);});
Func<int,int,int> process= ((int a,int b)=>{return a*b;});
  • 委托的正常流程,第一步,先定义一个委托;第二步,定义一个方法;第三步,将方法赋予给委托。
  • 用Func和lambda可以将上面三步变成一步,直接Func定义委托,然后=号,然后lambda表达式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值