黑马程序员11——C#的委托以及在.NET1.x .NET2.0及.NET3.5写法的演变(未完待续)

 ---------------------- Windows Phone 7手机开发.Net培训、 期待与您交流!----------------------

什么是委托

定义

委托和类一样,是一种用户自定义类型。但类表示的是数据的集合,而委托保存的是一个或多个方法。
1.使用特定签名和返回类型声明一个新的委托类型。委托声明看上去和方法声明相似,只是没有实现块。
2.使用新的委托类型声明委托变量。
3.创建委托类型的对象,把它副职给委托变量。新的委托对象包括指向方法的引用,这个方法和第一步定义的签名一致。
4.为委托对象增加其他方法。这些方法必须与定义委托类型时的签名和返回值相同。
5.在代码中像调用方法一样调用委托。在调用委托的时候,器包含的多个方法会依次执行。
委托和类的定义过程如下:


委托赋值和+=时,其实是新建了一个委托并赋值。

调用带返回值的多播委托:返回值是方法列表最后一个方法的返回值,前面的抛弃。
调用带ref参数 :参数值会根据方法列表的改变而改变。

演变

匿名方法允许在创建或为委托增加方法时包含小段内联代码---->C#2.0的匿名方法---->C#3.0中被lambda表达式替代。
从匿名方法到lambda表达式的演变:

一图解释C#委托的发展

匿名方法赋值给委托时,参数列表的省略:

lambda表达式语法:


事件Event

事件是被简化的针对特殊用途的委托。
  • 事件是成员而不是类型,所以:
    • 由于事件不是类型,不能使用对象创建表达式(new)来创建对象。
    • 由于事件是成员:
      • 它必须声明在类或结构中,和其他成员一样;
      • 不能在一段可执行代码中声明事件。
    • 事件成员被隐式自动初始化为null




标准事件的用法

GUI编程是事件驱动的,也就是说在程序运行时,它可以在任何时候被事件打断,比如按钮点击、按下按键或系统计时器。在这种情况发生时,程序需要处理事件然后继续其他事情。


推荐链接:

老赵:从.NET中委托写法的演变谈开去(上):委托与匿名方法
http://blog.zhaojie.me/2009/08/from-delegate-to-others.html

问题:delegate在.NET Framework1.1,2.0,3.5中各怎么写。
1. 首先:委托本身从没有变过,改变的一直是委托的「写法」。更确切地说,改变的只是「编译器」。
  • .NET1.x中委托的写法
先声明一个委托类型SomeDelegate
再实例化一个委托 对象someDelegate
  • .NET2.0中委托写法
改进地方:1, .NET2.0引入了泛型,委托也可以使用泛型
2, 声明后直接把方法赋值给委托,可以省略new实例化委托对象过程。
3, 可以使用闭包的匿名方法了。
  • .NET3.5写法(Lambda表达式)


 ----------------------Windows Phone 7手机开发.Net培训、 期待与您交流!----------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值