日常复习随笔 - 委托与事件

1.委托

C# 中的委托类似于 C 或 C++ 中函数的指针。
委托是存有对某个方法的引用的一种引用类型变量,引用可在运行时被改变。
委托特别用于实现事件和回调方法。
委托声明决定了可由该委托引用的方法。
委托可指向一个与其具有相同标签的方法。
委托的多播
委托对象可使用 “+” 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。
“-” 运算符可用于从合并的委托中移除组件委托。
使用委托的这个有用的特点,您可以创建一个委托被调用时要调用的方法的调用列表。

2.事件

C# 事件是一种成员,用于将特定的事件通知发送给订阅者。事件通常用于实现观察者模式,它允许一个对象将状态的变化通知其他对象,而不需要知道这些对象的细节。
C# 中使用事件机制实现线程间的通信。

3.委托与事件的区别

委托 是一种数据类型,用于定义方法的引用,可以直接创建、调用和修改。
事件 是基于委托的封装,提供了一种发布-订阅机制,让对象可以订阅特定事件并在事件触发时执行处理代码。

4.泛型委托

与delegate声明相比的优点
• 简化了无返回值的方法的定义和使用。
• 可以省略委托类型的显式定义。

Action

是一个泛型委托,用于表示一个没有返回值的方法。它最多可以有16个参数,但不能有返回值。
用于简化委托的使用,特别是当你需要传递无返回值的方法时。

// 使用 Action
Action<string> action = message => Console.WriteLine(message);
action("Hello, World!");

Func

是一个泛型委托,用于表示一个有返回值的方法。它最多可以有16个参数,最后一个泛型参数表示返回值类型,其他泛型参数表示方法的参数类型。

// 使用 Func
Func<int, int, int> add = (a, b) => a + b;
int result = add(3, 4);  // result = 76

5.总结

• delegate: 是一种自定义的委托类型,灵活但需要显式定义,可以用于任何类型的委托,包括有返回值和无返回值的方法。
• Action: 是一个内置的泛型委托,用于表示无返回值的方法,最多支持16个参数,简化了对无返回值方法的定义。
• Func: 是一个内置的泛型委托,用于表示有返回值的方法,最多支持16个参数,简化了对有返回值方法的定义。
Action 和 Func 提供了一种更简洁的方式来定义和使用委托,特别是在常见的场景中,如事件处理和 LINQ 查询。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值