C#之委托、事件、lambda

5 篇文章 0 订阅

委托

委托是什么?

委托是一种封装方法的特殊机制,可以帮助程序员更灵活的调用相应的方法。

委托的使用

委托是一个可以引用方法的对象,所以在创建委托时,实际创建的是一个存储方法引用的对象。在程序运行期间,同一个委托能够用于调用不同的方法,只要改变它引用的方法就可以。所以,委托调用的方法不是在编译时确定的,而是在运行的时候确定的。

委托的声明

<span style="font-family:Microsoft YaHei;font-size:18px;">public delegate void DelegateClass()
</span>

委托的使用方法

(1)DelegateClass dc1=new DelegateClass(Program.Fangfa1);

(2)DelegateClass dc2=new DelegateClass(Fangfa1);

(3)DelegateClass dc3=Fangfa1;

(4)Aclass ac=new Aclass();

DelegateClass dc4=new DelegateClass(ac.Fangfa2);

多播委托

多播委托是指允许创建方法的调用列表或者链表的能力。当调用多播委托时,这些方法均会自动执行。如果委托具有返回值,则将列表中最后一个方法的返回值用做整个委托调用的返回值。方法链表的创建:首先实例化一个委托,然后使用“+”或“+=”运算符为链表添加方法。在移除一个方法的时候,可以使用“-”或“-=”运算符。

<span style="font-family:Microsoft YaHei;font-size:18px;">public delegate void StrOp(ref string str)
StrOp strop;
StrOp op1=Hanshu1;
StrOp op2=Hanshu2;
strop=op1;
//移除方法1,添加方法2
strop-=op1;
strop+=op2;
</span>

事件

事件构建在委托的基础上,事件是一种信号机制,它在某些操作发生时自动地发出通知。事件定义为对象发送的消息,发信号通知操作的发生。

声明事件

public event AbcDelegate Abcevent;

AbcDelegate是委托名称, Abcevent;是事件名称

使用事件

(1)订阅事件

eventname += delegatename

eventname:事件名称

delegatename:方法名称

(2)取消订阅事件

eventname -= delegatename

lambda

lambda用于创建匿名方法

表达式:param=>expr

param(参数)

expr(表达式)

<span style="font-family:Microsoft YaHei;font-size:18px;">public delegate int Adelegate(int abm)
class Program
{
      static void Main(string[] args)
      {
             Adelegate a=count=>count+5;
             int x=0;
             for(int i=0;i<10;i++)
            {
                   x=a(x);
                   Console.WriteLine(x);
            }
            Console.ReadLine();
       }
}</span>


Ps:

事件和lambda匿名方法都是建立在委托基础上的,都是委托对象实现的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值