C#学习笔记 委托

委托

  1. 委托是什么
    委托是函数的容器,可以理解为表示函数(方法)的变量类型
    它用来存储传递函数(方法)
    委托的本质是一个类,用来定义函数(方法)的类型(返回值和参数的类型)
    不同的函数(方法)必须对应和各自"格式"一致的委托

  2. 基本语法
    关键字:delegate
    语法:访问修饰符 delegate 返回值 委托名(参数列表)

写在哪里
可以声明在namespace和class语句块中
更多情况下写在namespace中

简单记忆:就是函数申明语法前面加delegate关键字

  1. 定义自定义委托
    访问修饰符默认不写为public,这样在别的命名空间也能使用
    Private 其他命名空间就不能使用了,所以一般用private

申明一个可以用来存储无参无返回值的容器

delegate void myFunc();//委托规则的申明 在同一语句块中不能重名
public delegate int MyFunc2(int a);
//表示用来装载或传递返回值为int,有一个int参数的函数委托容器规则

这里只是定义一个规则,并没有使用

  1. 使用自定义委托
    委托变量是函数的容器
    在3中代码所演示的申明两个委托,所谓申明委托,其实就是申明两个变量类型 ,这个类型是专门用于存储函数的
MyFunc f=new MyFunc(Func);
MyFunc f2=Func;
static void Func(){
   Console.WriteLine("你在做什么呀");
}

两种写法本质上是一样的

因为是变量,所以可以实例化一个出来。MyFun中是需要传入一个参数的,这个参数就是它所存储函数的函数名。当然,这个函数要和申明中定义的一致(即有相同的返回值类型和相同的参数类型、个数)
此时,这个变量f就装载了函数Fun()
此时只是把函数装进去,但是没有任何调用的。
那么如何去执行这个函数呢?
方法一:f.Invoke()

方法二: f();相当于用调用函数的形式去调用它

委托用在哪儿?

  1. 作为类的成员变量
  2. 作为函数的参数

在函数中的作用:
可以在函数中先处理一些逻辑,当这些逻辑处理完了,再执行传入的函数。

  1. 委托变量可以存储多个函数(多播委托)
//用委托存储多个函数
MyFunc ff=null;  //ff=ff+func;
ff+=Func;
ff+=Func3;
ff();

当调用ff时,就会调用Func和Func3这两个函数

  1. 系统定义好的委托
    常用的委托系统已经给我们提供了
    命名空间:System
    Action——一个无参无返回值到的委托
    Func<>——泛型是返回值,一个可以有任意类型返回值的委托
    Action<>——可以传n个参数的委托(最多可以传16个参数)(没有返回值)
    Func<>也用于可以有多个参数,一个返回值的委托,泛型中前几个是参数,最后一个是返回值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值