C#的委托(Delegate)

本文介绍了C#中的委托和回调函数概念。委托是实现回调的一种机制,类似于C语言中的函数指针。回调函数通过函数指针调用,允许一个函数在执行过程中调用用户提供的函数。在C#中,声明委托使用delegate关键字,并定义返回值和参数列表。泛型委托如Action和Func简化了代码,提供无返回值或带有返回值的函数委托。使用委托可以提高代码的模块化和重用性。
摘要由CSDN通过智能技术生成

 委托:顾名思义,让别人帮你办件事。委托是C#实现回调函数的一种机制。

那么,回调函数是什么呢?(C语言)

首先介绍一下函数指针,函数指针是指向函数的指针变量,一般的指针变量是指向一个普通变量,而函数指针是指向函数。

函数指针可以像一般函数一样,用于调用函数,传递参数。

而函数指针变量可以作为某个函数的参数来使用,回调函数就是一个通过函数指针调用的函数,简单讲:回调函数是由别人的函数执行时调用你实现的函数。

总的来说,C#的委托类似于C的函数指针,可以将函数作为参数传递,比较典型的应用实例例如创建回调函数。

委托的使用,首先要使用delegate关键字声明一个委托函数,并定义它的返回值和参数列表。

委托(Delegate)是存有对某个方法的引用的一种引用变量,引用可在运行时被改变,

特别用于实现事件和回调方法,所有的委托都派生于System.Delegate。

声明委托

    在C#中使用一个类时,分两个阶段,首先,需要定义一个类,然后实例化类的一个对象(只需要静态方法除外)。使用委托也需要这两个步骤,首先必须要定义使用的委托,对于委托,定义委托就是告诉编译器这种类型的委托表示哪种类型的方法,然后,必须创建该委托的一个或多个实例,编译器在后台将创建表示该委托的一个类。

语法:

<权限修饰符>   delegate <return type> <delegate-name> <parameter list>

举个例子:

internal  delegate  int  DelegateTest (int a,int b)

使用委托的特点是。在定义调用委托的地方,并不确定将来委托会做什么,通常这样的程序设计会更加模块化,减少代码的耦合性,重用性更强。

泛型委托

C#的委托支持泛型参数,也就是泛型委托  ,修改我自己Lambda表达式文章里的例子:

 链接:

C# Lamda 表达式 =>_djcxd的博客-CSDN博客

Action和Func

C#提供了Action和Func两个关键字,它们是预先定制的泛型委托,区别是Action无返回值,Func有返回值(返回值类型是最后一个泛型参数)。使用Action和Func主要是为了避免重复声明不同的委托类型,使用起来更方便。

  • Action action;                                                  Action 相当于delegate void F();
  • Action <int>  action2;                                      Action <int>相当于delegate void F(int) ;
  • Func<int > func;                                              Func<int> 相当于delegate int F();
  • Func<int,int> func2;                                        Func<int,int> 相当于delegate int F(int);
  • Func<int,int,string> func3;                              Func<int,int,string>相当于delegate string. F(int,int);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值