概述:
委托就像一个接口,具体方法实现这个接口,而我们只需要了解委托的定义就可以调用。
1.委托:
A.委托的作用:
a.占位,让其他方法帮你做事-----解耦。
b.将方法(一个或绑定后的多个方法)作为方法的参数-----封装方法。
B.委托的使用:
//将星爷电影国际化,实现双语orN语字幕
public class SubTitle
{
public void English()
{
Debug.Log("What difference does it make between people and salty fish if men don‘t have dreams?");
}
public void Chinese()
{
Debug.Log("做人如果没有梦想跟咸鱼有什么分别?");
}
public static void Bird()
{
Debug.Log("bb bbbbbbbbbb bb?");
}
}
//鸟说:我也有梦想
void BirdSay( LanguageDelegete la ) { la (); } a.声明委托
public void delegete LanguageDelegete();//注意委托的签名与绑定的方法要一致,这里没有参数
b.创建Delegete对象
LanguageDelegete allLanguage = new LanguageDelegete(Subtitle.Bird); (另一种方法:LanguageDelegete allLanguage = Subtitle.Bird ;//代理静态方法)
c.绑定多个方法(多路广播委托)
BirdSay( allLanguage ); //将方法作为方法的参数使用
subTitle = new Subtitle(); allLanguage += subTitle . English;//代理实例方法 allLanguage += subTitle . Chinese;//封装方法 allLanguage -= Subtitle . Bird; d.调用委托
allLanguage ();
输出:注意顺序
C.为什么要用委托:
在C++中有函数指针,可以用来指向函数的引用,而C#中则没有,那怎么办呢?通过以上学习你会发现委托和指针十分相似,但是委托还具有函数指针所不具备的优点:在C++中我们经常遇到空指针等问题,而委托则不需要担心,即委托是面向对象,类型安全的,不用顾虑无效地址和地址越界等问题。下次我们继续为大家讲解事件机制。
PS:其实语言只是个工具,学习以上这些知识其实都是在打磨你的工具,这样我们才能做出更加出色的产品,如果你的工具现在还是个铁杵,那么跟着我一起把它磨成针吧,只要坚持,总有一天你会编织出属于自己的梦想!!
如果你对独立游戏,体验艺术,设计学,心理学感兴趣, 欢迎关注我的新公众微信:黑客画家 我的主页:anchorart9.com ,我的一些学习笔记,心得,行业咨询等内容将逐步更新上去。
下面是工程文件,自己有想法想要Test的可以直接下载: |