委托(delegate)是一种可以把引用存储为函数的类型,委托的声明类似于函数,但不带函数体,委托的声明指定了一个返回类型和一个参数列表;在定义了委托后,就可以声明该委托类型的变量,接着把这个变量初始化为与委托有相同返回类型和参数列表的函数引用,之后,就可以使用委托变量调用这个函数,就像该变量是一个函数一样。
有了引用函数的变量后,还可以执行不能用其他方法完成的操作,例如,可以把委托变量作为参数传递给一个函数,这样,该函数就可以使用委托调用它引用的任何函数,而且在运行之前无需知道调用的是哪个函数。
delegate double 委托计算方法(double 参数1, double 参数2);
static double 乘积(double 参数1, double 参数2)
{return 参数1 * 参数2;}
static double 商数(double 参数1, double 参数2)
{return 参数1 / 参数2;}
主函数中:
委托计算方法 计算两数;
Console.WriteLine("请输入两个小数,并用符号','隔开。");
string 输入 = Console.ReadLine();
int 分割位 = 输入.IndexOf(',');
double 参数1 = Convert.ToDouble(输入.Substring(0, 分割位));
double 参数2 = Convert.ToDouble(输入.Substring(分割位 + 1));
Console.WriteLine("请输入选择,M=计算乘积,否则计算商数。");
输入 = Console.ReadLine();
if(输入 == "M")
计算两数 = new 委托计算方法(乘积);
else
计算两数 = new 委托计算方法(商数);
Console.WriteLine("计算结果:{0}", 计算两数(参数1, 参数2));
Console.ReadKey();