Unity学习笔记之——委托与事件

本文介绍了C#中委托的基础概念,包括MyDelegate、Action和Func的声明方式、参数传递和使用,以及匿名方法和多播委托的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

委托的定义和使用

委托的作用:

如果要把方法作为函数来进行传递的话,就要用到委托。简单来说,委托是一个类型,这个类型可以赋值一个方法的引用。

C#的委托通过delegate关键字来声明。属于引用类型

声明委托:

方式一:delegate void MyDelegate1(int x)

方式二(泛型):delegate void MyDelagate2<T>(T x)

使用委托:

方式一:MyDelegate1 mydelegate1 = new MyDelegate1(func)

方式二:MyDelegate2 mydelegate2 = func

调用委托:

方式一:mydelegate1(参数);

方式二:mydelegate2.Invoke(参数);

Action委托

什么是Action委托

Action<T>是.Net Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显式声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有一个通过值传递给它的参数。而且不能有返回值

还有一种是非泛型委托Action。

注意:

Action委托至少0个参数,至多16个参数,无返回值。

Action表示无参无返回值的委托。

Action<int,string>表示有传入参数int,string,无返回值的委托。

Action<int,string,bool>表示有传入参数int,string,bool,无返回值的委托。

使用方式:

方式一:Action action1=方法名;        action1();

方式二:Action<int,int> action2=方法名;        action2(1,2);

Func委托

什么是Func委托

Func是.Net Framework内置的带有返回类型的泛型委托。

注意:

System.Func可以不带参数,但必须带一个返回值

System.Func若是调用了多个泛型的委托定义,最后一个参数的数据类型是函数的返回值类型,需保持一致;非最后一个泛型T的声明,需与实现函数的参数个数及类型保持一致

Func至少0个输入参数,至多16个输入参数,根据返回值泛型返回。(必须有返回值,不可void)

Func<int>表示没有输入参数,返回值为int类型的委托。

Func<object,string,int>表示传入参数为object,string,返回值为int类型的委托。

Func<T1,T2,T3,int>表示传入参数为T1,T2,T3(泛型),返回值为int类型的委托。

使用方式:

方式一:Func<string> func1=方法名;        string a=func1();

方式二:Func<int,string> func2=方法名;        string b=func2(1000);

匿名方法

没有名字的方法。一般作为函数的回调,或与委托联合使用

Action action = delegate()
{
        Debug.Log("匿名函数被执行");
}

Event事件

Event事件本身就是一种委托,只是该委托只能作为类的成员,且不可在类外进行调用

        (1)event事件 只允许作为类的成员变量且仅在类的内部使用,外部不得直接调用

        

多播委托

在C#语言中多播委托是指在一个委托中注册多个方法,在注册方法时可以在委托中使用加减运算符来实现或撤销方法

Action action=Show1;
action+=Show2;
//action-=Show2;
action?.Invoke();

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值