Unity c# 委托和回调 匿名函数和Lambda表达式
2017-11-17 18:11
393 查看
回调可以同时保存多个函数调用,可以有多个参数,没有返回值
![](http://img.blog.csdn.net/20171117181204535?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
执行结果
![](http://img.blog.csdn.net/20171117181216917?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
委托可以同时保存多个函数调用,可以有多个参数,可以有返回值,但是只有最后绑定的那个函数调用的返回值才会被返回
![](http://img.blog.csdn.net/20171117181220894?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
执行结果,两个函数都有输出,但最终的返回值只有2
![](http://img.blog.csdn.net/20171117181224642?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
匿名函数和Lambda表达式
两者都是为了更方便的设定回调或委托出现的
以回调为例,先看匿名函数
匿名函数可以带参数,也可以不带参数。如果带参数,参数的类型和数量需要和回调保存一致;不带参数的匿名函数可以指定到任何回调上面(不管那个回调有没有参数,不过这样,这个匿名函数就没有办法在自己的函数体中访问可能存在的参数了)
![](http://img.blog.csdn.net/20171117181228556?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
执行结果
![](http://img.blog.csdn.net/20171117181232039?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Lambda表达式
Lambda表达式必须和绑定的回调参数保持一致
![](http://img.blog.csdn.net/20171117181236237?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
执行结果
![](http://img.blog.csdn.net/20171117181239450?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
DOTween的特殊函数To的用法
DOTween.To(),可以将某种值(包括int,float,vector3等)在设定的时间内慢慢的变成另一个值,可以实现很多特殊的效果
To()需要四个参数,前两个都是委托类型的
![](http://img.blog.csdn.net/20171117181242802?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20171117181246192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTgyNzQ0MzQ2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
执行结果都是一样的,将V的值在2秒内变成3
执行结果
委托可以同时保存多个函数调用,可以有多个参数,可以有返回值,但是只有最后绑定的那个函数调用的返回值才会被返回
执行结果,两个函数都有输出,但最终的返回值只有2
匿名函数和Lambda表达式
两者都是为了更方便的设定回调或委托出现的
以回调为例,先看匿名函数
匿名函数可以带参数,也可以不带参数。如果带参数,参数的类型和数量需要和回调保存一致;不带参数的匿名函数可以指定到任何回调上面(不管那个回调有没有参数,不过这样,这个匿名函数就没有办法在自己的函数体中访问可能存在的参数了)
执行结果
Lambda表达式
Lambda表达式必须和绑定的回调参数保持一致
执行结果
DOTween的特殊函数To的用法
DOTween.To(),可以将某种值(包括int,float,vector3等)在设定的时间内慢慢的变成另一个值,可以实现很多特殊的效果
To()需要四个参数,前两个都是委托类型的
执行结果都是一样的,将V的值在2秒内变成3
相关文章推荐
- (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)-3/3
- [Unity&C#&事件委托]对委托事件的学习与实践
- Unity之C#——异步委托开启线程,三种方法检测结束
- 委托是什么?匿名方法是什么?在C# 3.0中,Lambda表达式是什么?扩展方法是什么?LINQ是什么?您觉得C# 3.0中还有哪些重要的特性,它们带来了什么优势?BCL中哪些类库和这些特性有关?您平时最常用哪些
- unity中C#委托的应用
- Unity&C#的委托事件总结
- [我眼中的C#]委托和Lambda表达式
- C#中的Action<T>、Func<T>委托和Lambda表达式
- 一起谈.NET技术,C# 委托,事件和Lambda表达式
- C#中的委托,匿名方法和Lambda表达式
- 【转】C#中的委托,匿名方法和Lambda表达式
- Unity之C#——利用泛型与委托拓展冒泡排序
- Tolua使用笔记六:在lua中操作C#的委托事件与在lua中对Unity的GameObject的操作
- c# 委托、事件、lambda表达式
- (转)C#中的委托,匿名方法和Lambda表达式
- C#中的委托,匿名方法和Lambda表达式
- C#学习日记25---匿名方法 与 Func委托 与 lambda表达式
- C#中的lambda表达式与委托的关系
- (转)C#中的委托,匿名方法和Lambda表达式
- C#神器 委托 + Unity神器 协程