分享

C#中的delegate的几种形式

 尹亮亮 2015-11-25
using UnityEngine;
using System.Collections;

public delegate void GreetingDelegate(string name);
class GreetMange{

//第一种情况
//public GreetingDelegate de1;
// public void GreetPeople(string name, GreetingDelegate MakeGreeting)
// {
// MakeGreeting(name);
// }

//第二种情况
//public GreetingDelegate de1;
// public void GreetPeople(string name)
// {
// if(de1!=null){
// de1(name);
// }
// }

//第三种情况
// public event GreetingDelegate de1;
// public void GreetPeople(string name)
// {
// if(de1!=null){
// de1(name);
// }
// }

}



public class EventStudy : MonoBehaviour {
void Start () {

GreetMange greet = new GreetMange ();
//第一种情况
// greet.de1 = EnglishGreeting;
// greet.GreetPeople ("尹亮亮",greet.de1);

//第二种情况
// greet.de1 = EnglishGreeting;
// greet.GreetPeople ("我叫尹亮亮!");

//第三种情况
// greet.de1 += EnglishGreeting;
// greet.GreetPeople ("我叫尹亮亮!");


}


void onClick(GameObject go)
{
Debug.Log ("EventClick!");
}

#region  事件机制
//事件的一个注册机制
public delegate void OnQuestChangeDelegate();//类比相当于是一个其它数据类型的别名   
public event OnQuestChangeDelegate OnQuestChangeEvent;
public void OnCanAcceptQuestChange(){
if(OnQuestChangeEvent!=null){
OnQuestChangeEvent();
}
}
#endregion


private static void EnglishGreeting(string name) {
Debug.Log("Morning:" + name);
}


// Update is called once per frame
void Update () {
}
}


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多