C#一次性删除委托中的所有方法

因为有的时候需要一次性删除委托中的所有方法 , 有时候不知道委托中挂载了哪些方法 , 即可通过委托的方法 GetInvocationList 得到此委托中所挂载的所有的方法一次行删除。来一个例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestA
{
    public class Program
    {
        public delegate void Delistener(string name);
        public void SayA(string name)
        {
            Console.WriteLine("A : {0}", name);
        }
        public void SayB(string name)
        {
            Console.WriteLine("B : {0}", name);
        }
        static void Main(string[] args)
        {
            Program p = new Program();
            Delistener myDe = p.SayA;
            Console.WriteLine(myDe);
            myDe += p.SayB;
            Console.WriteLine(myDe);
            Delegate[] ar =  myDe.GetInvocationList();
            myDe("Aonaufly");
            for (int i = 0; i < ar.Length; i++)
            {
                myDe -= ar[i] as Delistener;
            }
            Console.WriteLine(myDe);
            Console.Read();
        }
    }
}

依然事用到 -= 操作符。

时间: 2024-08-04 09:10:03

C#一次性删除委托中的所有方法的相关文章

MySQL删除数据库中所有表方法

MySQL删除数据库中所有表方法技术 maybe yes 发表于2015-01-23 12:16 原文链接 : http://blog.lmlphp.com/archives/66  来自 : LMLPHP后院 通过使用 CONCAT 函数将数据库表名称和需要执行的 SQL 语句连接起来,输出在控制台:然后从控制台复制这些内容,粘贴,执行,OK.table_schema 条件为需要操作的数据库名称,参考 SQL 语句如下: SELECT CONCAT('DROP TABLE IF EXISTS 

删除表及删除表中数据的方法

本文介绍SQL Server中如何删除表,如何删除表中的数据.在删除表数据时有delete和truncate两种方法,delete和truncate有什么区别呢? SQL Server,我们现在基本上使用的最古老的版本应该是SQL Server 2000吧,应该没有更早的版本了吧?!从SQL Server 2000开始,到SQL Server 2005,2008,2012等,T-SQL的处理能力越来越强.今天我们就来说说如何使用T-SQL脚本来删除表,以及删除表中的数据. 删除表和删除表数据这是

JS实现循环删除数组中元素的方法介绍

这篇文章主要给大家介绍了关于Javascript循环删除数组中元素的几种方法,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面来看看详细的介绍: 发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利

JAVA中循环删除list中元素的方法总结

印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末.看总结.. JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")

JAVA中循环删除list中元素的方法总结(跳格删除问题解决)(转)

印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末.看总结.. JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")

一次性删除数组中的多个元素

1.删除数组中的多个元素,也就是去掉数组中不符合条件的选项 分析:用for或者forEach遍历数组的话在方法体内部 splice后数组长度发生了变化,最后得不到正确的结果. filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素. 2.解决方法:使用逆向循环 或者 Array.prototype.filter()方法 下面以angular项目中的删除已完成选项为例: 数据: // 任务列表,true表示已完成 $scope.todoList = [ {id: 1, n

php删除数组中空值的方法介绍

说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下: 复制代码代码如下: <?php   foreach( $arr as $k=>$v){       if( !$v )           unset( $arr[$k] );   }   ?> 而且自我感觉还挺不错,只是这样的效率并不高也曾经试过,先将$arr转为对象,然后利用对象的特性来删除,因为:foreach是将当前操作的数组进行copy,每操作一下fo

js删除数组中元素的方法

Array.prototype.del=function(n) { //n表示第几项,从0开始算起. //prototype为对象原型,注意这里为对象增加自定义方法的方法. if(n<0){//如果n<0,则不进行任何操作.  return this; }else{  return this.slice(0,n).concat(this.slice(n+1,this.length)); } /*  concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的.  这里就是返回thi

JS中删除数组中的元素方法

删除指定下标数组元素 Array.prototype.del=function(index){ if(isNaN(index)||index>=this.length){ return false; } for(var i=0,n=0;i<this.length;i++){ if(this[i]!=this[index]){ this[n++]=this[i]; } } this.length-=1; }; 删除指定元素 Array.prototype.indexOf = function(v