C# delegate 添加和移除另一种方法

2022-09-20  乐帮网

c#

在C#中托管方法的添加和移除很方便的的使用+=和-=,有一些特殊情况下可能会用到它的原始写法如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
 
public class DelegateScript : MonoBehaviour {
 
    delegate void MyDelegate(int num);
    void Start()
    {
        //创建3 个MyDelegate 委托类的实例
        MyDelegate myDelegatel = new MyDelegate(this.PrintNum);
        MyDelegate myDelegate2 = new MyDelegate(this.PrintDoubleNum);
        MyDelegate myDelegate3 = new MyDelegate(this.PrintTripleNum);
 
 
        MyDelegate myDelegates = null;
        //使用Delegate 类的静态方法Combine
        myDelegates = (MyDelegate)Delegate.Combine(myDelegates, myDelegatel);
        myDelegates = (MyDelegate)Delegate.Combine(myDelegates, myDelegate2);
        myDelegates = (MyDelegate)Delegate.Combine(myDelegates, myDelegate3);
        //将myDelegates 传入Print 方法
        this.Print(10, myDelegates);
 
 
 
        ///移除方法 
        myDelegates = (MyDelegate)Delegate.Remove(myDelegates, myDelegatel);
        ///移除所有
        myDelegates = (MyDelegate)Delegate.RemoveAll(myDelegates, myDelegatel);
 
    }
 
    private void Print(int v, MyDelegate myDelegates)
    {
        
    }
 
    private void PrintTripleNum(int num)
    {
        
    }
 
    private void PrintDoubleNum(int num)
    {
        
    }
 
    private void PrintNum(int num)
    {
         
    }
}

https://blog.csdn.net/nicepainkiller/article/details/78229126

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力