当前位置:网站首页>C#中对委托的理解和使用
C#中对委托的理解和使用
2022-07-30 05:41:00 【凡梦_】
.Net中要把方法作为参数传递给其它方法时,需要用委托来实现。即委托是.Net中用来进行方法寻址的。类似C++中的函数指针。C++中函数指针是非类型安全的,仅仅指向的是内存位置。并没有定义具体的参数类型、返回类型。.Net中的委托是类型安全的,委托定义了参数类型和返回类型。
委托在.Net中是一种特殊类型的对象,对象中包含了一个或者多个方法的地址。也有人说委托是方法的容器。委托常用在方法回调、事件调用上。委托(Delegate)都派生自System.Delegate类。委托使用包括委托声明和委托实例化。
一、委托的声明
委托的声明类似于变量的声明:
publicdelegateintMyDelegate(inti,intj);
public为范围定义,delegate为委托的关键字,int 为返回参数的类型,MyDelegate为委托的名称,括号中的两个int为传入的参数。
在定义委托时必须给出返回参数、传入参数的类型。委托可以定义在类的内部、也可以定义在类的外部,可以通过public、private、protected定义访问范围。
委托的声明语法:
delegate <return type> <delegate-name> <parameter list>
二、委托实例化和使用
委托声明后需要通过new关键字进行实例化。实例化时需要把委托指向的方法传递给委托,这里的方法只需要方法名称,不需要方法参数。如:
MyDelegate myDelegate =newMyDelegate(AddNum);
AddNum为传入的方法名称。完整代码:
class Program
{
public delegate int MyDelegate(int i, int j);
static void Main(string[] args)
{
MyDelegate myDelegate = new MyDelegate(AddNum);
int sum=myDelegate(3,5);
Console.WriteLine(sum.ToString());
}
private static int AddNum(int i,int j)
{
return i + j;
}
}
}
三、多路广播委托
委托可以包含一个或者多个方法地址,绑定多个方法地址时,可以同时调用多个方法。
绑定多个方法:
委托实例+=方法名称
取消绑定:
委托实例-=方法名称
广播示例:
class Program
{
public delegate int MyDelegate(int i, int j);
static void Main(string[] args)
{
MyDelegate myDelegate = new MyDelegate(AddNum);
myDelegate += MultiNum;
int sum=myDelegate(3,5);
Console.WriteLine(sum.ToString());
}
private static int AddNum(int i,int j)
{
return i + j;
}
private static int MultiNum(int i,int j)
{
return i * j;
}
}
}
边栏推荐
猜你喜欢
随机推荐
运维工程师面试经历
零基础C语言“函数”教程,有手就行
使用Nodejs搭建Web Server(入门教程)
记一次流量分析实战——安恒科技(八月ctf)
torch distributed training
【墨者学院】身份认证失效漏洞实战
C语言:通过函数实现一个整形有序数组的二分查找
[网鼎杯 2020 青龙组]AreUSerialz
C语言入门(前期准备工作)——超级详细的建议和教学,带你顺利跨越编程门槛
umi后台项目导航自定义icon问题
FastAPI Quick Start
函数(c语言)
jsonpath
分支和循环语句
运算符和交互基础
认识虚拟dom
vulnhub-XXE ctf安全真题
mysql间隙锁失效?
Connect to Mysql in the cloud server Docker detailed graphic and text operations (full)
jsonpath