C#委托
委托
委托的本质
在C#中,委托是一个特殊的类;
在某种程度上,相当于C++的函数指针;
在某种程度上,相当于接口(Interface);
委托可以是static的,接口则不能;
委托的定义
关键字:delegate
public delegate void MyDelegate(string message);
public delegate int OperationDel(int x, int y);
委托OperationDel代表了一组方法,它们的方法签名是:
返回值:int;参数:int,int
只要符合该签名的方法,都可以赋给此委托;
委托实例的创建:
MyDelegate del = new MyDelegate(方法名);
MyDelegate del += new MyDelegate(方法名);
委托链
实际上委托实例,是一个委托链。+=代表增加委托实例到委托链中,相反,-=则代表去掉该委托实例;
委托的意义
委托可以使得软件的复用程度提高;
委托在一定程度上相当于接口;
委托的例子
using System;
using System;
namespace DelegateSample
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
private static int Add(int x, int y)
{
int result = x + y;
Console.WriteLine("x + y = {0}", result);
return result;
}
private static int Sub(int x, int y)
{
int result = x - y;
Console.WriteLine("x - y = {0}", result);
return result;
}
// 委托OperationDel代表了一组方法,它们的方法签名是:
// 返回值:int;参数:int,int
public delegate int OperationDel(int x, int y);
{
}