C#委托与事件

委托也称指代、代表、代理,与函数指针不同,委托是面向对象的,并且是类型安全的。
委托可以看作是对象的一种新类型,使用委托可以将方法引用封装在委托对象内,然后可以将该委托对象传递给可以调用所引用方法的代码,而不必在编译时知道将调用哪个方法。
在这里插入图片描述
委托的声明格式如下:
[访问修饰符] delegate 返回类型 委托名(参数列表);
举例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test2
{
    public delegate void Mydelegate(string str);
    class Program
    {
        static void Methode1(string str)
        {
            Console.WriteLine("这是方法1:"+str);
        }
        static void Methode2(string str)
        {
            Console.WriteLine("这是方法2:" + str);
        }
        static void Methode3(string str)
        {
            Console.WriteLine("这是方法3:" + str);
        }
        static void Methode4(string str)
        {
            Console.WriteLine("这是方法4:" + str);
        }
        static void Main(string[] args)
        {
            Mydelegate D1,D2,D3,D4;
            D1 = Methode1;
            D2 = Methode2;
            D3 = Methode3;
            D4 = Methode4;
            D1("1");
            D2("2");
            D3("3");
            Console.WriteLine("*************************");
            Mydelegate D;
            D = D1;
            D += D2;
            D += D3;
            D += D4;
            D("3");

        }
    }
}

运行结果:


这是方法1:1
这是方法2:2
这是方法3:3


这是方法1:3
这是方法2:3
这是方法3:3
这是方法4:3
请按任意键继续. . .


在如上代码中D不能+=D1,因为D实例还未被初始化!

注意:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值