C#基础之委托用法实例教程基础之委托用法实例教程
主要介绍了C#中委托的用法,包括委托的功能、定义及用法示例,需要的朋友可以参考下
本文以实例形式简单介绍了C#中委托的用法,是深入学习C#程序设计所必须掌握的重要技巧。现以教程形式分享给大家供大
家参考之用。具体如下:
首先,委托是C#中最为常见的内容。与类、枚举、结构、接口一样,委托也是一种类型。类是对象的抽象,而委托则可以看
成是函数的抽象。一个委托代表了具有相同参数列表和返回值的所有函数。比如:
delegate int GetCalculatedValueDelegate(int x, int y);
在上面的定义中,我们定义了一个委托,这个委托代表着一类函数,这些函数的第一个参数是整数型的x,第二个参数是整数
型的y,而函数的返回值则是一个整数。在这里,为了描述方便,我们把这一类的函数称为具有相同签名(signature)的函数
(注意:这个签名并不是数字签名中的概念,而只是表示这类函数具有相同的参数列表和返回值)。
既然委托是一种类型,那么它就能被用来定义参数、变量以及返回值。由委托定义的变量用于保存具有相同签名的函数实体。
需要注意的是,C#和C++不同,C++中的函数指针只能保存全局的或者静态的函数,而C#中的委托实体则可以指代任何函
数。
现在我们来看一个例子,在这个例子中,我们使用了上面定义的那个委托,并创建了一个委托实体,使其指代程序中的
AddCalculator函数,接下来就可以直接像使用函数本身一样,使用这个委托实体来获得计算的结果。
delegate int GetCalculatedValueDelegate(int x, int y);
static int AddCalculator(int x, int y)
{
return x + y;
}
static int SubCalculator(int x, int y)
{
return x - y;
}
static void Main(string[] args)
{
GetCalculatedValueDelegate d = AddCalculator;
Console.WriteLine(d(10, 20));
}
到这里也就能基本上明白“委托”的意义了,针对上面的Main函数,本来需要调用AddCalculator函数的,却通过d来调用了,也
就是,后续对AddCalculator的操作由d代为效劳。本来是要小明去老师办公室拿粉笔盒的,由于小明和小文是好朋友,因此小
明就要小文代他去拿,于是小文成了小明的代理,小明委托小文去拿粉笔盒。
现在我们来考虑委托作为参数的情形。将委托作为参数,可以把函数本身的处理逻辑抽象出来,而让调用者决定最终使用什么
样的逻辑去处理。请看下面的例子:
delegate int GetCalculatedValueDelegate(int x, int y);
static int AddCalculator(int x, int y)
{
return x + y;
}
static int SubCalculator(int x, int y)
{
return x - y;
}
static int Calculator(GetCalculatedValueDelegate del, int x, int y)
{
return del(x, y);
}
static void Main(string[] args)
{
Console.WriteLine(Calculator(AddCalculator, 10, 20));
}
在上面的例子中,Calculator函数的第一个参数就是一个委托。事实上,Calculator对x和y将会做什么处理,它本身并不知道,
如何处理x和y由GetCalculatedValueDelegate来决定。那么在Main方法里,我们将AddCalculator方法作为参数传递给
评论0
最新资源