委托定义和使用(摘录)

作用

委托作用:1.事件

                  2.多线程

                  3.对象之间的逆向传递

      为了简化在类中互相调用方法乱套

委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

委托(Delegate)特别用于实现事件和回调方法。

所有的委托(Delegate)都派生自 System.Delegate 类。

声明委托(Delegate)

委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。

public delegate int MyDelegate (string s); 

//引用任何一个带有一个单一的 string 参数的方法,并返回一个 int 类型变量。

 语法

delegate <return type> <delegate-name> <parameter list>

实例化委托(Delegate)

声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。当创建委托时,传递到 new 语句的参数就像方法调用一样书写,但是不带有参数。

public delegate void printString(string s);
...
printString ps1 = new printString(WriteToScreen);

委托的多播(Multicasting of a Delegate)

委托对象可使用 "+" 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。"-" 运算符可用于从合并的委托中移除组件委托。

使用委托的这个有用的特点,您可以创建一个委托被调用时要调用的方法的调用列表。这被称为委托的 多播(multicasting),也叫组播。下面的程序演示了委托的多播:

 // 创建委托实例
         NumberChanger nc;
         NumberChanger nc1 = new NumberChanger(AddNum);
         NumberChanger nc2 = new NumberChanger(MultNum);
         nc = nc1;
         nc += nc2;
         // 调用多播
         nc(5);

委托(Delegate)的用途

下面的实例演示了委托的用法。委托 printString 可用于引用带有一个字符串作为输入的方法,并不返回任何东西。

using System;
delegate int NumberChanger(int n);
namespace Appliction{
    class TestDelegate{
        static int num=10;
        public static int Add(int n){
            num+=n;
            return num;
        }
            
        public static int Mult(int n){
            num*=n;
            return num;
        }
            
        public static int GetNum(){
        return num;
        }
        
            
        static void Main(string[] args){
            NumberChanger a1=new NumberChanger(Add);
            NumberChanger a2=new NumberChanger(Mult);
            a1(5);
            Console.WriteLine("进行加法后的结果为:{0}",GetNum());
            a2(10);
            Console.WriteLine("进行乘法后的结果位:{0}",GetNum());
            Console.ReadLine();
        
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值