委托可以认为是一种把引用存储为函数的类型
委托使用delegate关键字。
定义委托之后,就可以声明该委托类型的变量,然后初始化这个变量与委托有相同签名的函数引用。,最后,使用委托变量调用这个函数。
委托对象可以组合,用“+”运算符来组合。组合的委托可调用组成它的那两个委托。只有相同类型的委托才可以组合。
委托的用途主要与事件处理有关。
看看一个小例子
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
///
delegate void processDelegate(string str);
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
///
public static void Welcome(string s)
{
Console.Write("Welcome to: "+s);
}
public static void happynewyear(string s)
{
Console.Write("happy new year: "+s);
}
//函数中调用
public static void execute(processDelegate process)
{
process("csdn");
}
[STAThread]
static void
{
//使用新的委托类型声明变量
processDelegate process,process1,process2;
//初始化委托变量,使用new建立一个新委托,这里的参数与委托类型的参数不匹配
process=new processDelegate(Welcome);
process("yyg");
process1=new processDelegate(happynewyear);
process1("yyg");
//组合委托
process2=process+process1;
process2("xxyy");
execute(process);
}
}
}
最后结果是
Welcome to : yyg
Happy new year :yyg
//组合委托
Welcome to : xxyy
Happy new year : xxyy
//函数
Welcome to : csdn
浙公网安备 33010602011771号