关于C#委托的一点认识

本文介绍了委托的概念及其实现方式,展示了如何通过定义委托来传递方法,从而避免程序中大量的条件判断语句,提高代码的可扩展性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
将方法作为方法的参数
年底了公司都有活动,已知活动内容包括吃饭和旅游,吃的已经确定,但是具体去哪旅游不清楚,于是我们抽象得出如下类。
public class A
    {
        public  delegate void Travel();
        public void Active(Travel travel)
        {
            Eat();
            travel();
        }

        public void Eat()
        {
            MessageBox.Show("Eat fish!");
        }
    }

当一切准备工作做好了,旅行路线也已经制定好了,我们就可以组织活动了。
 /// <summary>
        /// 测试委托
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            A a = new A();
            A.Travel travel = new A.Travel(ToJiuZhai);
            a.Active(travel);
        }

        private void ToJiuZhai()
        {
            MessageBox.Show("to jiuzhai!");
        }

委托还有另外一种写法:
 A.Travel travel;

        /// <summary>
        /// 测试委托
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            A a = new A();
            travel += ToJiuZhai;
            a.Active(travel);
        }

        private void ToJiuZhai()
        {
            MessageBox.Show("to jiuzhai!");
        }

由此可见,委托就是对不能具体化的方法的抽象,但是又不能随意改变方法的输入和输出,是一种既有约束又灵活的编程方式,委托要实现的内容要到具体用的时候才能知道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值