C#委托学习

什么是委托

委托实质上可以理解为是用来装函数的。关键字是delegate

委托的声明:[修饰符]delegate [返回值] 委托名[参数]

几点说明:
1.修饰符一般是public,不写的话默认也是public。
2.如果用委托来装函数的话一定要是匹配的,我们通过下文来理解这句话。

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

namespace 委托
{
    delegate void fun();//只能容纳返回值为空且没有参数的函数。
    delegate int fun2(int i);//只能容纳返回值为int且带有一个参数的函数。
    class person
    {
        public fun f3;
        public fun2 f4;
         
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            //法一:
            fun f1 = new fun(speak);
            f1.Invoke();//如果是上面这种装法的话就要用Invoke()去调用实现。

            //法二:用f2来装这个,然后还有要注意的就是自己定义的委托和要装入的委托要是一致的,就是说要是匹配的。
            fun f2 = speak;
            //一个委托里面可以容纳多个函数,而且执行的时候的话也是按照添加的顺序执行,+就是向委托里面加函数,-就是移除函数。
            f2 += speak;
            f2 -= speak;
            //执行委托。
            f2();
        }
        static void speak()
        {
            Console.WriteLine(1);
        }
    }
}

1.在上面的代码块中我们定义了两个委托分别是,fun和fun2,注意这只是仅仅定义,如果要用的话要声明一个这样的变量。

2.在代码中都写了的注释,大家可以看看。

系统定义的委托

1.Action:系统声明的无返回值的,但是可以有最多16个参数的委托。

2.Func:系统声明的有返回值的,返回值的类型可以根据自己的需求写,所包装的函数可以带的参数可以有16个。

            Func<int,int> a = Dodo;//第一个参数为函数的参数类型,第二个为返回值类型。
        }
        static void speak()
        {
            Console.WriteLine(1);
        }
        static int Dodo(int a)
        {
     
            Console.WriteLine("hello world");
            return 1;
        }

小结:用我们制定的委托来容纳函数的时候记得是要匹配的,包括参数和返回值,还有调用委托的时候和调用函数一致,不过是不用带参数的,还有一点就是一般我们用系统给我们定义好的委托就好了,没必要去定义了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值