类与对象实例之委托方法的使用

委托
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
例题
在一个类中分别定义加、减、乘、除四个方法,在main函数中分别将这四个方法添加到委托对象中,并完成输出。
①定义委托原型。
例如 delegate bool MyDelegate(decimal x);//delegate相当于委托类名;
②创建委托对象
例如:
BankCard c1=new BankCard();
MyDelegate d1= new MyDelegate(c1.Pay);
上面最后一行代码还可以直接简写为:
MyDelegate d1=c1.pay;
③通过委托对象调用方法
例如
d1(300);
④委托的合并和删除可以直接进行加减加入;
例如

Fun f=Div;
f=f+Mod;//Mod也进去了,所以现在Fun有两个函数Div和Mod;

下面是一个例题
在一个类中分别定义加、减、乘、除四个方法,在main函数中分别将这四个方法添加到委托对象中,并完成输出。

  namespace _2
    {
        class Program
        {
            delegate void Fun(int x, int y);//创建委托对象
            static void Main(string[] args)
            {
                Console.WriteLine("输入运算数");
                int x = Int32.Parse(Console.ReadLine());
                int y = Int32.Parse(Console.ReadLine());
                Fun f = Add;
                f(x, y);//这时候,相当于只进行Add(x,y)函数;
                Console.WriteLine();
                f += Min;
                f(x, y);//进行加减运算
                Console.WriteLine();
                f += Mul;
                f(x, y);//+-*
                Console.WriteLine();
                f += Div;
                f(x, y);//+-*/ 删除减法的话类似如此
                Console.WriteLine();
                
            }
            static void Add(int x, int y)//加法运算
            {
                Console.WriteLine("{0}+{1}={2}", x, y, x + y);
            }
            static void Min(int x, int y)
            {
                Console.WriteLine("{0}-{1}={2}", x, y, x - y);
            }
            static void Mul(int x, int y)
            {
                Console.WriteLine("{0}*{1}={2}", x, y, x * y);
            }
            static void Div(int x, int y)
            {
                Console.WriteLine("{0}/{1}={2}",x,y,x/y);
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_42265608/article/details/89390235