比如说一个公司(场景),你是老板,手下有两个员工,小张和小王。

你命令小王,如果小张玩游戏,则小王扣去小张500元钱。
这就是现实中的委托。
实际上,在写程序中,程序员就是老板,小张和小王就是两个对象。小张玩游戏是一个方法,小张还有一个游戏事件,他玩游戏激发这个事件。而小王就是事件处理对象,他负责把小张的钱扣除500。
所以,委托有如下几个要素:
1 激发事件的对象--就是小张
2 处理对象事件的对象--就是小王
3 定义委托,就是你让小王监视小张。
如果这三个要素都满足的话,则你就写出了一个完整事件的处理。
下面有个例子:在vs.net2003 C#控制台应用程序编辑运行成功:
using System;
namespace CSharpConsole
{
  public class 场景
  {
    [STAThread]
    public static void Main(string[] args)
    {
      Console.WriteLine("场景开始了....");
      // 生成小王
      小王 w = new 小王();
      // 生成小账
      小张 z = new 小张();

         // 指定监视

      z.PlayGame += new PlayGameHandler(w.扣钱);
      // 开始玩游戏
      z.玩游戏();
      console.writeline("场景结束...");
      Console.ReadLine();
    }
  }

  // 负责扣钱的人
  public class 小王
  {
    public 小王()
    {
      Console.WriteLine("生成小王...");
    }
    public void 扣钱(object sender,EventArgs e)
    {

      Console.WriteLine("小王:好小子,上班时间胆敢玩游戏...");

      Console.WriteLine("小王:看看你小子有多少钱...");
      小张 f = (小张)sender;
      Console.WriteLine("小张的钱: " + f.钱.ToString());
      Console.WriteLine("开始扣钱......");
      System.Threading.Thread.Sleep(500);
      f.钱 = f.钱 - 500;
      Console.WriteLine("扣完了....现在小张还剩下:" + f.钱.ToString());
    }
  }
  // 如果玩游戏,则引发事件
  public class 小张
  {
    // 先定义一个事件,这个事件表示“小张”在玩游戏。
    public event PlayGameHandler PlayGame;
    // 保存小张钱的变量
    private int m_Money;
    public 小张()
    {
      Console.WriteLine("生成小张....");
      m_Money = 10000; // 构造函数,初始化小张的钱。
    }
    public int 钱 // 此属性可以操作小张的钱。
    {
      get
      {
        return m_Money;
      }
      set
      {
        m_Money = value;
      }
    }
    public void 玩游戏()
    {
      Console.WriteLine("小张开始玩游戏了.....");
      Console.WriteLine("小张:CS好玩,哈哈哈! 我玩.....");
      System.Threading.Thread.Sleep(500);
      System.EventArgs e = new EventArgs();
      //OnPlayGame(e);
      if(PlayGame != null)
      {
        PlayGame(this,e);
      }
    }
    protected virtual void OnPlayGame(EventArgs e)
    {
      if(PlayGame != null)
      {
        PlayGame(this,e);
      }
    }
  }
  // 定义委托处理程序
  public delegate void PlayGameHandler(object sender,System.EventArgs e);
}

asp.net事件委托易理解实例的更多相关文章

  1. 对JS中事件委托的理解

    什么是事件委托: 事件委托——给父元素绑定事件,用来监听子元素的冒泡事件,并找到是哪个子元素的事件.(不理解冒泡的可以去百度下) 定义:利用事件冒泡处理动态元素事件绑定的方法,专业术语叫事件委托. 使 ...

  2. 事件冒泡及事件委托的理解(JQuery Dom操作)

    jQuery事件冒泡: click mouseenter 等事件没有绑定 也会触发,只是触发后没有任何结果 子元素触发事件后,会把触发事件传递给父元素,那么父元素也会被触发. 不管有没有绑定事件,都会 ...

  3. js事件委托target

    **看一看,瞧一瞧!** 话说要谈事件委托和target.那我们首先来看看什么是事件.话说什么是事件呢?一般的解释是比较重大.对一定的人群会产生一定影响的事情.而在JavaScript中就不是这样了, ...

  4. 关于c#中委托与事件的一些理解

    文章目的:作者(初学者)在学习c#的过程中,对事件.委托及其中的“object sender,EventArgs e”一直感觉理解不透,因此在网上找了一些资料,学习并整理出了该篇笔记,希望能将自己的心 ...

  5. 事件委托,元素节点操作,todolist计划列表实例

    一. 事件委托 事件委托就是利用冒泡的原理,把事件加到父级上,来代替子集执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能:其次可以让新加入的子元素也可以拥有相同的操作. 比如有20个&l ...

  6. 怎么理解js中的事件委托

    怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/119000 ...

  7. jQuery的事件委托实例分析

    事件委托主要是利用事件冒泡现象来实现的,对于事件委托的精准的掌握,可以有利于提高代码的执行效率.先看一段代码实例: <!DOCTYPE html> <html> <hea ...

  8. js实例分析JavaScript中的事件委托和事件绑定

    我们在学习JavaScript中,难免都会去网上查一些资料.也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非.以下全部称为“事件委托”),尤其是在查JavaScript的事件处 ...

  9. 理解js事件冒泡事件委托事件捕获

    js事件冒泡 javascript的事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止,这就是事件冒泡现象. <di ...

随机推荐

  1. OC基础 代理和协议

    OC基础 代理和协议 1.协议 (1)oc语言中得协议:一组方法列表,不需要我们自己实现,由遵守协议的类来实现协议所定制的方法. (2)协议的使用步骤:制定协议-->遵守协议-->实现协议 ...

  2. jQuery操作元素

    通常,我们在创建元素时,会使用以下代码: var p = document.createElement("p"); p.innerText = "this is para ...

  3. protected访问修饰符

    子类可以调用, 但实例化的对像不可调用  new object;

  4. 微信支付:redirect_uri参数错误 的解决办法

    redirect_url参数错误: 报这个错误,说明你的公众号后台授权设置有问题(一般有两处) 一:检查授权目录 答:支付授权目录是网站发起请求的页面所在目录,并且必须是能通过url地址访问的(与真实 ...

  5. 实现html元素跟随touchmove事件的event.touches[0].clientX移动

    主要是使用了transform:translateX 实现 <!DOCTYPE html> <html lang="en"> <head> &l ...

  6. 工作中遇到的浏览器差别(就不叫IE6bug了)

    1.根据ie版本写css <!--[if lt IE 8]> <style> .cntContainer{margin-top: -1px;} </style> & ...

  7. NodeJs简单七行爬虫--爬取自己Qzone的说说并存入数据库

    没有那么难的,嘿嘿,说起来呢其实挺简单的,或者不能叫爬虫,只需要将自己的数据加载到程序里再进行解析就可以了,如果说你的Qzone是向所有人开放的,那么就有一个JSONP的接口,这么说来就简单了,也就不 ...

  8. php 如何写入、读取word,excel文档

    如何在php写入.读取word文档 <? //如何在php写入.读取word文档 // 建立一个指向新COM组件的索引 $word = new COM("word.applicatio ...

  9. php随机抽奖

    貌似有些不合理,麻烦大家帮忙指正指正!谢谢~ <?php header("content-type:text/html;charset=utf-8"); function g ...

  10. 解决IE10以下对象不支持“bind”属性或方法

    IE10一下的浏览器,如果在JS代码中用了bind函数,那么就会报“SCRIPT438: 对象不支持“bind”属性或方法” 因为浏览器没有提供这个参数的方法,所以我们就自己写一个bind,来让这个参 ...