using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication43
{
class Program
{
delegate double ProcessDelegate(double paraml, double param2);
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("输入2个数字");
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("M or D");
string inputs = Console.ReadLine();
if (inputs == "M")
{
process = new ProcessDelegate(Multiply);
} else
{
process = new ProcessDelegate(Divide);
}
Console.WriteLine(process(param1, param2));
Console.ReadLine();
}
}
}
对上面代码的理解:
我们声明的委派指定了将来的方法的参数,两个double类型的参数
process = new ProcessDelegate(Multiply);
这个是关键语句,通过向ProcessDelegate
委派传递不同的方法,我们得到的process
方法就会拥有不同的对参数的处理能力