C#进阶——委托

目录

知识点01:什么是委托

知识点02:如何声明一个委托

知识点03:定义自定义的委托

1.声明一个用于存储无参无返回的函数的容器

2.声明有参有返回值的委托

知识点04:如何使用定义好的委托

1.如何将函数添加到对应的委托”容器“中?

        ①:在委托实例化的同时,为其添加函数

        ②:委托实例化完成后,通过+=将函数放到委托”容器“中

2.将函数放到委托后,该如何调用

        ①:使用委托中的invok函数

        ②:直接将其当作一个函数来使用

知识点05:多播委托

知识点06:委托的应用

1.委托常用作类的成员

2.委托作其他函数的参数(回调函数)

知识点07:系统定义好的委托

总结



知识点01:什么是委托

委托是函数的“容器”,可以将其理解为表示函数的变量类型,本质上是一个类,用来定义函数的类型,用于存储和传递函数,不同的函数必须对应各自“格式”一致的委托

知识点02:如何声明一个委托

基本语法:访问修饰符 delegate 返回值类型 委托名 (参数列表) 

例如使用C#自带的无返回值委托Action

public delegate void Action(int a);

知识点03:定义自定义的委托

1.声明一个用于存储无参无返回的函数的容器

delegate void MyFun();

2.声明有参有返回值的委托

需注意即使存在重载的规则,委托依旧不能重名

delegate int MyFun1(int a);

知识点04:如何使用定义好的委托

使用委托就是将“格式“一致的函数,加到该委托这个”容器“之中去,然后在其他逻辑中,执行该委托(就是执行里头的函数)。

1.如何将函数添加到对应的委托”容器“中?

        ①:在委托实例化的同时,为其添加函数
MyFun f=new MyFun(Fun);

void Fun()
{
//Fun函数内部逻辑
}
        ②:委托实例化完成后,通过+=将函数放到委托”容器“中
f+=Fun1;

void Fun1()
{
//Fun1函数逻辑
}

2.将函数放到委托后,该如何调用

        ①:使用委托中的invok函数
f.invoke();
        ②:直接将其当作一个函数来使用
f();

需注意,在调用委托时,会将其内部所有的函数全部按添加顺序执行一遍

知识点05:多播委托

一个委托变量可以存储多个函数,存储了多个函数的委托叫多播委托,将委托实例化后,通过+=和-=来为其添加的删除函数。

知识点06:委托的应用

1.委托常用作类的成员

即将委托实例化后,为其添加函数后调用

private Myfun myfun;

myfun+=Fun;
myfun+=Fun1;

myfun.Invoke();


void Fun()
{

}

void Fun1()
{

}

2.委托作其他函数的参数(回调函数)

delegate void DelegateDone(); //定义一个无返回值的委托

void DoWork(DelegateDone callBack){ callBack(); }//再定义一个实现函数,将委托作为参数传递进来:


  class Program
    {
        delegate void DelegateDone();
        static void Main(string[] args)
        {
            Program test = new Program();
            test.DoWork(testCallBack);
        }
        void DoWork(DelegateDone callBack)
        {
            Console.WriteLine("执行某一函数");
            callBack();
        }
        static void testCallBack()
        {
            Console.WriteLine("输出回调成功");
        }

知识点07:系统定义好的委托

使用前需引入名称空间 System;

1.Action(无参无返回)

2.Func<返回值>(有返回值无参)

3.泛型委托Action<参数列表>(有参无返回值)

4.Func<0-16个参数,0-1个返回值>

总结:

委托是装载函数的容器,本质上是一个类

可以用委托变量装载函数的传递函数

系统提供了自带的委托,足够日常开发中使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值