C#委托和事件的区别

本文介绍了C#中委托、事件、Action和Func的概念及使用方法,包括它们的声明、实例化、注册和调用。通过具体的代码案例展示了如何运用委托实现方法传递,如何使用匿名函数和lambda表达式简化代码,以及如何操作事件进行订阅和发布。同时,还分别通过Action和Func展示了无返回值和有返回值的委托类型应用。

一、概念
1、委托:将方法以变量的形式传递,并且以方法的形式执行。他是类,是引用类型。
2、事件:功能被限制的一个委托变量。它的类型是委托类型。
3、委托的三种形式
3.1、delegate: 四步(声明,实例化,注册方法,调用)
3.2、Action:添加的方法不能有返回值
3.3、Func: 添加的方法要有返回值
3.4、lamda表达式:方法只使用一次,没有多次使用的话使用

二、案例
1、委托、匿名函数、lamda表达式、事件测试
public class DelegateAndEventTest : MonoBehaviour
{
//声明 带一个参数并且无返回值的委托
public delegate void TestDlg(string content);
//TestDlg 类型的事件
public event TestDlg TestDlgEvent;

// Start is called before the first frame update
void Start()
{
    //委托的解释:将方法以变量的形式传递,并且以方法的形式执行
    TestDlg dlg = TestDlg01;
    dlg += TestDlg02;//委托链
    dlg -= TestDlg02;
    dlg("测试");

    //匿名函数:方法只使用一次,没有多次使用的话使用匿名函数
    TestDlg dlg1 = delegate (string name) 
    {
        Debug.Log(name+"这是匿名函数");
    };
    dlg1("测试");

    //lamda表达式
    TestDlg dlg2 = (name) =>
    {
        Debug.Log(name+"这是lamda表达式");
    };
    dlg2("测试");

    //事件 功能被限制的一个委托变量 它的类型是委托类型
    //通过+=添加通知订阅事件
    //通过-=取消通知订阅事
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值