C#委拖小例子

委托具有以下属性:

  • 委托类似于 C++ 函数指针,但它们是类型安全的。

  • 委托允许将方法作为参数进行传递。

  • 委托可用于定义回调方法。

  • 委托可以链接在一起;例如,可以对一个事件调用多个方法。

  • 方法不必与委托类型完全匹配。 有关详细信息,请参阅在委托中使用变体(C# 和 Visual Basic)

  • C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递来代替单独定义的方法。 C# 3.0 引入了 Lambda 表达式,利用它们可以更简练地编写内联代码块。 匿名方法和 Lambda 表达式(在某些上下文中)都可编译为委托类型。 这些功能现在统称为匿名函数。 有关 lambda 表达式的更多信息,请参见 匿名函数(C# 编程指南)

 1 private void btnOpen_Click(object sender, EventArgs e)
 2         {
 3             
 4 
 5             Func<int, bool> t1 = testa;//注册方法只写方法名,不写参数。。。
 6 
 7             int[] i = { 1, 2,5 };
 8             int j=i.Count(t1);
 9 
10             int h = i.Count(n=>n%2==0);//等效
11 
12             MessageBox.Show(j.ToString());
13         }
14 
15         private bool testa(int a)
16         {
17             return a%2==0;
18         }

代码解读(个人理解):

  一个int型数组有一个扩展方法Count<>,参数接收的是一个public delegate TResult Func<in T, out TResult>(T arg) 类型的委托 ;

  代码第5行定义了一个Func<int, bool> t1 委托,并给t1注册了方法testa;

  代码第8行把t1做为参数传递给Count方法,Count把数组的每个元素做为t1的参数执行后,返回所有为true的总数;

  第10行是用lambda表达式方式,省去了定义委拖对象和方法,系统会将表达式做类型转换和参数类型推断;

转载于:https://www.cnblogs.com/longling2344/p/5769664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值