查看: 1013|回复: 2
打印 上一主题 下一主题

[其他] C# 委托学习笔记

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-8-29 02:11:44 |只看该作者 |倒序浏览

接触委托 代理 delegate很久啦。除了看API,Kotoba也给我讲了 。说到委托,拿下面这个小例子比较好。(14年6月26花花给我的练习)

实例:写一个方法A,定义个方法B(打印hello),和方法C(打印world),其中我只允许调用方法A。实现,1秒后打印出hello,3秒后打印出world。

先说一下回调的好处:

  在开发中我们有些代码呢,是很固定的,但又有一些东西很灵活很容易发生变动。先假设B和C都不是我们自己写的,而是其他人已经写好的其他方法,所以我们在无BUG的情况下,尽可能不去修改别人的方法,这个时候方法A是我们自己写的,我们有个需求那就是1秒后调用方法B,3秒后调用方法C,这就是现在的写法。 可能我需求增加之后呢,类似的代码会越来越多。比如4秒后执行方法D,但突然哪天你觉得方法A执行的太慢了,改了下时间,改为0.5秒,那对后面几个方法都要改,这样会很麻烦。然后我们稍加改动,这样修改方法B的时间也不会影响其他方法的执行。



  1. void Start()
  2. {
  3.    StartCoroutine(FunA(2,FunB));
  4.    StartCoroutine(FunA(3,FunC));           
  5. }

  6. IEnumerator FunA(float time ,DeleMethod  m)
  7. {
  8.       yield return new WaitForSeconds(time);
  9.       m();  
  10. }  

  11. void FunB()
  12. {
  13.    print("hello");
  14. }

  15. void FunC()
  16. {
  17.    print("world");
  18. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-8-29 03:09:51 |只看该作者
Thanks for sharing ! !@~!@!~@~
回复

使用道具 举报

33

主题

1

听众

2680

积分

中级设计师

Rank: 5Rank: 5

纳金币
559
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-8-29 09:16:18 |只看该作者
Thanks for sharing
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-27 09:19 , Processed in 0.094396 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部