深入浅出话委托

本文深入浅出地介绍了.NET中的委托(Delegate)概念,通过实例展示了如何使用委托进行方法调用,降低了类之间的耦合度。委托不仅仅是函数指针的.NET版,它还支持多播,允许一个委托引用多个方法。文中通过对比C/C++的函数指针,突出了委托的多播特性,并给出了多播委托的应用示例,帮助读者理解委托在程序设计中的重要性。
摘要由CSDN通过智能技术生成

深入浅出话委托

小序

好久不来更新Blog了,一是因为工作比较忙,最重要的还是交了女朋友:),太爱她了。回顾了一下前面写的文章,看来大家还是很喜欢我的灌水风格,那今天就来写一写最近被问到的最多的问题——委托与事件。并把本文献给支持我工作的兄弟姐妹们和我亲爱的女友(虽然你看不懂代码,嘻嘻)。说实话,论“深入”,就我这臭水平绝对深不到哪儿去,我尽量给大家讲明白就是了。如果内容上有什么闪失,麻烦兄弟姐妹们多拍几块砖——小弟正急着盖房子呢!

正文

一.什么是委托(Delegate

         先来点经典的解释——摘自MSDNA delegate is a type that references a method. Once a delegate is assigned a method, it behaves exactly like that method. The delegate method can be used like any other method, with parameters and a return value.

我先把它译过来:委托(Delegate,也有人称之为“代理”)是一种数据类型,这种类型(的实例)引用着一个方法。一旦为一个委托分配(你可以理解为“挂接”)上一个方法,那么它的行为将与这个方法一致(挂接上就是为了调用这个方法,不一致我还挂个什么劲儿……原来老外也会说车轱辘话:p)。委托可以像任何方法一样使用,比如有或者没有参数,以及返回值等等。

         我给出一段例子,演示什么是Delegate

 

//=======水之真谛出品========
//===http://blog.csdn.net/FantasiaX
//===
上善若水,润物无声=====

using System;
using System.Collections.Generic;
using System.Text;

namespace DelegateSample
{
    //
地雷(类)
    class Mine
    {
        public void Blast(int enemies)
        {
            Console.WriteLine("Killed {0} Japanese soldier(s)!!!", enemies);
        }
    }

    //
院子(类)
    class Yard
    {
        public int enemiesInYard;
        public Mine mineInYard = new Mine();
    }

    //
绳子(委托)
    public delegate void PullingString(int enemies);

    //
战士(类)
    class Soldier
    {
        //
一个战士可以控制三颗地雷(你可以尝试用ArrayList,更爽)<

  • 6
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 46
    评论
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值