温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中委托与事件的原理是什么

发布时间:2020-12-04 15:27:13 来源:亿速云 阅读:388 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关C#中委托与事件的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

委托:个人在这里理解 委托就是 定义一个引用,一个可以记录函数指针的引用。

public delegate void GreetingDelegate(int param);

事件:就是基于委托定义的。

public event GreetingDelegate payxx;

其实这里的事件payxx 就差不多和string 一样可,只不过是存函数指针的变量。

这里上一个例子代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
public class basetest : MonoBehaviour
{

  public GameObject panel;
  private bool isclick = false;
  public delegate void GreetingDelegate(int param);
  public event GreetingDelegate payxx;
  // Use this for initialization
  void Start()
  {

  }

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

  }
  void OnMouseOver()
  {
    if (Input.GetMouseButtonDown(0))
    { //左键点击
      Debug.LogError("你点击了NPC");
      //playRenwu();
    }

  }
  public void pay() {
    Debug.LogError("触发了委托");
  }

  void playRenwu(bool isnotclick)
  {
    Debug.LogError("开始NPC任务");
    panel.gameObject.SetActive(isnotclick);
  }


  //protected virtual void Onpayxxxxx(int param)
  //{
  //  if (payxx != null)
  //  {
  //    Debug.LogError("委托的事件触发了");
  //    payxx(param);
  //  }
  //  else
  //  {
  //    Debug.LogError("委托的事件没触发");
  //  }

  //}
  public void Onpayxx(int param)
  {
    if (payxx != null)
    {
      payxx(param);
    }
    else { 
    }
    
  }

  public void Myfuntion2(int param)
  {
    Debug.LogError("第二次调用=" + param);
  }
  public void MyFunction(int param)
  {
    Debug.LogError("OKOKOKOKO=" + param);
  }
  public void Onclickbutton()
  {
    basetest eventTest = new basetest();
    eventTest.payxx += new GreetingDelegate(MyFunction);//安装事件
    eventTest.payxx += new GreetingDelegate(Myfuntion2);//安装事件
    eventTest.Onpayxx(10);

    if (isclick == false)
    {
      Debug.LogError("你点击了按钮");
      isclick = true;
      playRenwu(true);
    }
    else
    {
      isclick = false;
      playRenwu(false);
    }
  }
}

看完上述内容,你们对C#中委托与事件的原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI