delegate 是什么意思?如何用?
using System;
namespace Ch06Ex05
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
delegate double processDelegate(double param1, double param2);
/*
* delegate 声明定义一种引用类型,该类型可用于将方法用特定的签名封装。
* 委托实例封装静态方法或实例方法。委托大致类似于 C++ 中的函数指针;
* 但是,委托是类型安全和可靠的
*/
static double Multiply(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1 / param2;
}
static void Main(string[] args)
{
processDelegate process;
Console.WriteLine("Enter 2 numbers separated with a comma:");
string input = Console.ReadLine();
int commaPos = input.IndexOf(',');
double param1 = Convert.ToDouble(input.Substring(0, commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos + 1,
input.Length - commaPos - 1));
Console.WriteLine("Enter M to multiply or D to divide:");
input = Console.ReadLine();
if (input == "M")
process = new processDelegate(Multiply);
else
process = new processDelegate(Divide);
Console.WriteLine("Result: {0}", process(param1, param2));
}
}
}
delegate 是什么意思?如何用?