Netcore 委托(delegate)介绍

在最近的项目中有使用待委托,好久没用过了也有点生疏。因此打算写个博客记录一下。

1、什么是委托

学过c++语言的同学应该都很熟悉指针,那么委托就相当于c#中的指针。但是在c++中,函数指针只不过是一个指向内存位置的指针,它不是类型安全的。我们无法判断这个指针实际指向什么,像参数和类型就更无从知晓。但是.NET的委托完全不同,委托是类型安全的类,它定义了返回类型和参数类型。委托类不仅包含对方法的引用,也可以包含对多个方法的引用。

当要把一个方法传递给其他方法时,就需要用到委托。在过去我们习惯将数据作为参数传递给方法,但是现在要将方法传递给方法。

在c和c++中,只能提取函数的地址,并作为一个参数传递它。c没有类型安全。可以把任何函数传递给需要函数指针的方法。但是这种直接方法不仅会导致一些关于类型安全的问题,而且没有意识到:在进行面向对象编程时,几乎没有方法是孤立存在的,而是在调用方法之前通常需要与类实例相关联。所以在.NET在语法上不允许使用这种直接方法。如果要传递方法,就必须把方法的细节封装在一种新类型的对象中,即委托。委托只是一种特殊类型的对象,起特殊之处在于,我们之前定义的所有对象都包含数据,而委托包含的只是一个或多个方法。

 a、声明委托

     定义一个委托

     delegate void IntMethodInvoker(int x);

在这个实例中,定义了一个委托IntMethodInvoker,并指定该委托的每个实例都可以包含一个方法的引用,该方法带有一个int参数,并返回void。理解委托的一个要点就是它们的类型安全性非常高。在定义委托时,必须给出它所表示的方法的签名和返回类型等细节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值