C#中的委托实际中的应用
C#中的委托一个应用很广的东西,这次在这做个记录
delegate double Delcalc(double x, double y); public class DelegateDemo { public double Add(double x ,double y) { return x+y; } public double Dec(double x, double y) { return x - y; } public double Mul(double x, double y) { return x * y; } public double Div(double x, double y) { return x / y; } }
public class Program { static void Main(string[] args) { double result = 0; DelegateDemo temp = new DelegateDemo(); //委托变量定义的第一种调用方法 //Delcalc cal = new Delcalc(temp.Add); //result=cal(5, 3); //Console.WriteLine(result); //Console.ReadLine(); //委托变量定义的第二种调用方法 //Delcalc cal = temp.Dec; //Delcalc cal = temp.Div; //Test(cal); // 委托变量定义的第三种调用方法 //Test(new Delcalc(temp.muilt)); // 委托变量定义的第四种调用方法 //Test(temp.Div); //Action a = SayHi; //a(); //Action<string> a = SayHi; //a(" wang jing"); Func<double, double, double> f = temp.Dec; result=f(2, 9); Console.WriteLine(result); Console.ReadLine(); } static void Test(Delcalc del) { Console.Write("请输入X:"); double x =double.Parse(Console.ReadLine()); Console.Write("请输入y:"); double y = double.Parse(Console.ReadLine()); double result = del(x,y); Console.WriteLine($"计算结果:{result}"); Console.ReadLine(); } static void SayHi() { Console.WriteLine($"你好"); Console.ReadLine(); } static void SayHi(string name) { Console.WriteLine($"你好{name}"); Console.ReadLine(); } /* 使用委托的三个步骤: 1:定义委托 2:实例化委托 3:执行委托 */ /* 泛型委托: Action:无返回值的委托 Func:有返回值委托 Func<T1,T2,T3>注:T1,T2为输入参数类型,T3为返回值类型 */ }