delegate和event

本文深入探讨了C#编程中Delegate和Event的区别与应用,包括何时使用、两者之间的关键区别以及具体代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

delegate和event 


1、何时使用:
   a.异步的时候,比如加载完成通知。
   b.需要回调的时候,比如按钮点击、动画播放结束等。
   c.发送事件通知的时候。 比如,功能触发。
   d.使用观察者模式的时候。比如,2个类之间的交互。
   
2、2者的区别:
   a.event其实是对delegate的扩展。
   b.event在interfacea里使用直接定义属性,delegate在interfacea里使用要用get、set方式。
   c.event是private的访问级别,delegate是public的访问级别。
   d.event只能使用+=、-=的方式赋值,delegate确可以使用=、+=、-=的方式赋值。


总结:

    event和delegate最大的区别是增加的封装。让delegate完全由自己控制。


下面代码例子:

using UnityEngine;
using System.Collections;

class DelegateMain
{
    public delegate void CompareDelegate();
    public CompareDelegate compareDelegate;
    public event CompareDelegate eventDelegate;

    public void RunEventDelegate() 
    {
        if (eventDelegate == null) return;
        eventDelegate.Invoke();
    }
}

public class DelegateStudy : MonoBehaviour {

	// Use this for initialization
	void Start ()
	{
        DelegateMain d = new DelegateMain();
        d.compareDelegate = Compare;
        d.compareDelegate += new DelegateMain.CompareDelegate(delegateTest);
        d.compareDelegate.Invoke();

        d.eventDelegate += eventDele;
        d.eventDelegate += new DelegateMain.CompareDelegate(eventDelegateTest);
        d.RunEventDelegate();
	}

    void eventDelegateTest() 
    {
        Debug.Log("event delegate Test2");
    }

    void eventDele()
    {
        Debug.Log("event delegate Test1");
    }

    void delegateTest()
    {
        Debug.Log("delegate delegate Test2");
    }

    void Compare() 
    {
        Debug.Log("delegate delegate Test1");
    }
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值