c# 委托 事件

来源:互联网 发布:淘宝刷单被发现怎么办 编辑:程序博客网 时间:2024/05/19 15:40
定义delegate(对象,传输类)  委托类型的 event


传输类 数据


调用event(对象(自己),传输类)




调用:
引用event 绑定方法


调用 调用event函数(传输类)


被绑定方法(对象,传输类)


public class EventTest {
    public delegate void TestHandle(object sender, eventTe e);


    public event TestHandle handled;
    public class eventTe 
    {
        public struct Data
        {
            public int id;
            public string str;
        };
        public Data data;
        public eventTe(Data _data)
        {
            data = _data;
        }
    }
    public void OnTarget(eventTe e)
    {
        handled(this, e);
    }
}


public class DelegateTest : MonoBehaviour {
    delegate void eDelegate(string str);


    EventTest test = new EventTest();
void Start () {
        //eDelegate del = new eDelegate(ShowA);
        //del += ShowB;
        //del("a");
        //ShowAll(del);


        test.handled += ShowEventA;
        EventTest.eventTe.Data data = default(EventTest.eventTe.Data);
        data.id = 1;
        EventTest.eventTe et = new EventTest.eventTe(data);
        test.OnTarget(et);
}
    void ShowAll(eDelegate ed)
    {
        Debug.Log("showall");
    }
    void ShowA(string str)
    {
        Debug.Log("A");
    }
    void ShowB(string str)
    {
        Debug.Log(str);
    }
    void ShowEventA(System.Object et, EventTest.eventTe eet)
    {
        Debug.Log("eventsa"+eet.data.id+" "+eet.data.str);
    }
}

0 0
原创粉丝点击