delegate委托是一种存储函数引用的类型。定义了委托后,就可以声明该委托类型的变量。接着把这个变量初始化为与委托具有相同返回类型和参数列表的函数引用。之后就可以使用委托变量调用这个函数,就像该变量是一个函数一样。
using static System.Console;
using static System.Convert;
class Program
{
delegate double ProcessDelegate(double param1,double param2);
static double Multiply(double param1,double param2) => param1 * param2;
static double Divide(double param1,double param2) => param1 / param2;
static void Main(string[] args)
{
ProcessDelegate process;
string input = ReadLine();
int commaPos = input.IndexOf(',');
double param1 = ToDouble(input.Substring(0,commaPos))
double param2 = ToDouble(input.Substring(commaPos + 1,input.Length - commaPos - 1));
WriteLine("Enter M to multiply or D to divide:");
input = ReadLine();
if(input == "M")
process = new ProcessDelegate(Multiply);
else
process = new ProcessDelegate(Divide);
WriteLine($"Result:{process(param1,param2)}");
ReadKey();
}
}