c# 委托delegate 编写计算器
.Net 中的委托类似于 C 或 C++ 中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与 C 或 C++ 中的函数指针不同,委托是面向对象、类型安全的。
首先定义一个计算器类Calculator
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Calculator { class Calculator { static public decimal Sum(decimal a,decimal b) { return a + b; } static public decimal Sub(decimal a, decimal b) { return a - b; } static public decimal Mul(decimal a, decimal b) { return a * b; } static public decimal Div(decimal a, decimal b) { return a / b; } } }
在Calculator中定义了加、减、乘、除四种方法
然后定义委托mycalculate
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Calculator { public delegate decimal mycalculate(decimal a, decimal b); class Program { static void Main(string[] args) { //加法 mycalculate mysum = new mycalculate(Calculator.Sum); Console.WriteLine(mysum(5,6)); //减法 mycalculate mysub = new mycalculate(Calculator.Sub); Console.WriteLine(mysub(5, 6)); //乘法 mycalculate mymul = new mycalculate(Calculator.Mul); Console.WriteLine(mymul(5, 6)); //除法 mycalculate mydiv = new mycalculate(Calculator.Div); Console.WriteLine(mydiv(5, 6)); Console.ReadKey(); } } }
如果要进行加法运算,创建一个委托对象mysum,把计算器中的加法方法传递到该对象中,当执行该委托的时候会执行运算器中的加法函数
其他的运算操作同理