c#初学笔记 委托(Delegates)

一.委托的概念

1.委托就是可以用方法名调用另一方法的便捷方法,可以理解为一个”命令”。
2.先来看这段完整代码以及运行结果,,然后再进行分析:

using System;

namespace ConsoleApp1
{
     class Program
    {
        public delegate void MyDelete(string str);//声明一个委托,可以简单地把委托理解为一个”命令”
        static void Print1(string str)//定义一个方法Print1
        {
            Console.WriteLine("Print1:"+str);
        }
        static void Print2(string str)//定义一个方法Print2
        {
            Console.WriteLine("Print2:" + str);
        }
        static void Main()
        {
            MyDelete myDelete=new MyDelete(Print1); //一旦声明了委托类型,委托对象必须使用 new 关键字来进行实例化
            myDelete += Print2;//委托的多播;
            myDelete("hello");//该myDelete委托此时调用的是Print1和Print2两个函数,这就是委托的多播(一个委托可以调用多个方法)
            Console.ReadLine();
        }
    }
}

运行结果:
在这里插入图片描述

二.委托的声明

1.委托的声明格式:访问修饰符+delegate+返回类型+委托类型名+参数列表,例如上述代码中的:

public delegate void MyDelete(string str);//该委托可被用于引用任何一个带有一个单一的 string 参数的方法,返回类型为空

(1)访问修饰符:c#中,访问修饰符有public、protected、private、internal、protected internal五种。上述代码中,public就是访问修饰符。
(2)delegate代表委托
(3)返回类型:如void、int、float、bool等。上述代码中,void 就是返回类型。
(4)委托类型名:委托类型名是程序员自己定义的名称。上述代码中,MyDelete就是自定义的委托类型名
(5)参数列表:上述代码中,string str就是参数列表,表示该委托接受一个string类型的参数。
2.委托必须先声明后创建

三.委托的实例化

一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。例如上述代码中的:

MyDelete myDelete=new MyDelete(Print1); //一旦声明了委托类型,委托对象必须使用 new 关键字来进行实例化

上述代码的意思是,该委托myDelete将用于引用带有一个带string参数的方法Print1

四.委托的多播

1.委托对象可使用 “+” 运算符进行合并,例如上述代码中的:

             MyDelete myDelete=new MyDelete(Print1); //一旦声明了委托类型,委托对象必须使用 new 关键字来进行实例化
            myDelete += Print2;//委托的多播;

这两行代码的意思是,该委托myDelete不仅将引用带有一个string参数的方法Print1,还将引用带有一个string参数的方法Print2,即一个委托同时引用多个方法,这就可以简单理解为委托的多播,
而代码的运行结果
在这里插入图片描述
也表明myDelete(“hello”)这一行代码成功地引用了Print1和Print2两个方法,即实现了委托的多播。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值