/*委托
委托是一种可以把引用存储为函数的类型,只有在介绍到事件和事件处理的时候才解释的清楚.委托的声明非常类型函数,但是不带函数体,而且要使用delegate,委托的声明指定了一个函数签名,其中包含一个返回类型和参数列表.定义了委托后就可以声明该委托类型的变量,接着把这个变量初始化为与委托有相同。
Delegate关键字指定该定义是用于委托的,而不是用于函数的, 委托和事件这两个概念是完全配合的。委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数.*/
namespace 委托
{
class MyDelegate
{
//double型的二元参数委托
//委托的声明非常类型函数,但是不带函数体,而且要使用delegate,委托的声明指定了一个函数签名;Delegate关键字指定该定义是用于委托的,而不是用于函数的
//委托仅仅是函数指针,它能够引用函数,通过传递地址的机制完成。委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数
delegate double ProcessDelegate(double param1, double param2);//定义一个委托
static double Mult(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1 / param2;
}
static void Main(string[] args)
{
ProcessDelegate process;//定义委托成员变量
double param1 = 16, param2 = 4;
process = new ProcessDelegate(Mult);//实例化乘法委托
Console.WriteLine("ProcessDelegate(Mult);{0}", process(param1, param2));
process = new ProcessDelegate(Divide);//实例化除法委托
Console.WriteLine("ProcessDelegate(Divide);{0}", process(param1, param2));
Console.ReadKey();
}
}
} |