委托
我认为委托实际上是一种设计模式的封装。
委托的本质就是,将大致的流程定下来(包含输入与输出格式),将其中计算的细节由一个被委托的函数进行具体实现。
委托:将函数当作形参进行传递。要提前固定输出输出。
注意:一定到使用静态权限,否则会报错。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace xue_1
{
// 创建委托:delegate 关键字
// 委托就是把方法(函数)当作参数进行传递使用
public delegate double Cal(double x, double y);
class MyClass
{
// 加减乘除
// 必须是静态
static double Add(double num1, double num2)
{
return num1 + num2;
}
static double Sub(double num1, double num2)
{
return num1 - num2;
}
static double Mul(double num1, double num2)
{
return num1 * num2;
}
static double Div(double num1, double num2)
{
return num1 / num2;
}
// 委托直接使用 Cal名字当作类型,以形参的方式来使用
static void Test(Cal fun)
{
Console.WriteLine("请输入x:");
double x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入y:");
double y = Convert.ToDouble(Console.ReadLine());
double res = fun(x, y);
Console.WriteLine("X与Y的运算结果为:{0}", res);
}
static void Main(string[] args)
{
// 实例化委托(通过更改实例化的参数, 来控制程序的计算执行过程)
// 但输入输出的固定格式的。
方式一 未使用Test
//Cal cal = new Cal(Add);
调用方法
//double n = cal(1, 2);
//
//Console.WriteLine("结果:{0}", n);
//Console.ReadKey();
// 方式二 使用Test
Test(Add);
Test(Sub);
Test(Add);
Test(Div);
Console.ReadKey();
}
}
}