欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#委托與事件原理及實例解析

 更新時間:2020年12月03日 10:16:36   作者:手撕高達的村長  
這篇文章主要介紹了C#委托與事件原理及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

委托:個人在這里理解 委托就是 定義一個引用,一個可以記錄函數(shù)指針的引用。

public delegate void GreetingDelegate(int param);

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

public event GreetingDelegate payxx;

其實這里的事件payxx 就差不多和string 一樣可,只不過是存函數(shù)指針的變量。

這里上一個例子代碼:

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("觸發(fā)了委托");
  }

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


  //protected virtual void Onpayxxxxx(int param)
  //{
  //  if (payxx != null)
  //  {
  //    Debug.LogError("委托的事件觸發(fā)了");
  //    payxx(param);
  //  }
  //  else
  //  {
  //    Debug.LogError("委托的事件沒觸發(fā)");
  //  }

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

  public void Myfuntion2(int param)
  {
    Debug.LogError("第二次調(diào)用=" + 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);
    }
  }
}

payxx 存函數(shù)的地址,調(diào)用是按次數(shù)來的。

這里輸出的結(jié)果是:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論