91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-12-04 15:27:13 來源:億速云 閱讀:404 作者: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

宁强县| 呼玛县| 阳谷县| 聊城市| 大关县| 拉孜县| 云霄县| 宜春市| 碌曲县| 哈密市| 崇阳县| 海晏县| 澳门| 北票市| 水城县| 浮梁县| 监利县| 无极县| 乐清市| 萨迦县| 资阳市| 车险| 嘉荫县| 进贤县| 崇明县| 延吉市| 渝中区| 资兴市| 长丰县| 综艺| 呼伦贝尔市| 浦东新区| 屏南县| 三江| 湖州市| 静乐县| 长子县| 精河县| 贵定县| 东台市| 渝中区|