LileLTP--程序之路

努力坚持走着这条路,虽然是刚刚起步……

李乐ID:lileltp
46131次访问,排名2348好友0人,关注者0
lileltp的文章
原创 31 篇
翻译 0 篇
转载 14 篇
评论 24 篇
LileLTP的公告
最近要看一下的书
最近评论
everest:我已经把你的博客加入了。
博客名称:everest的博客
网址:http://blog.csdn.net/everest
RSS:http://blog.csdn.net/everest/rss.aspx
everest:我加你了
烟台大苹果:已经加你了
Feng:huh...I love this song so much too......
aaa:哈哈
~~
java 很难的
文章分类
收藏
相册
.net站点收藏
asp.net入门
ASP酷
MSDN中文网站
中国DotNet俱乐部
留言与交换链接
★★★★交换链接★★★
★★★★留言板★★★★
点击直接从这里给我QQ发信息吧
网页平面
W3CHINA
我的平面作品
相册和其他
我的又一根据地
Wallop--也是根据地
我的相册
麻省理工學院開放式課程
友情链接(Blog)
driftingice
Eclipse 详细配置
sosoho's blog
vk的专栏
刘鹏小子的Blog
烟台大苹果(RSS)
猫儿左左
老康(RSS)
英雄会之强强联手
顽小鱼(RSS)
黑驴的路
友情链接(设计类)
123千克设计空间
Howe's blog
站点收藏
1.赛迪网-技术天地
2.ChinaJavaWorld
3.太平洋软件资讯
4.中国Java开发网
5.Java研究组织
6.Java中文站
7.Java爱好者
8.JSP天空
9.CnJsp
a.无忧脚本
b.UMLchina
c.Sun技术社区
d.IBM
e.中国软件开发
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载 关于委托的精彩解说收藏

新一篇: 代码大全读书笔记(一) | 旧一篇: ASP.NET常用小技巧

有许多人问的,.Net中的委托以及事件处理。我拿简单的例子说明一下,是现实中的例子:

比如说一个公司(场景),你是老板,手下有两个员工,小张和小王。
你命令小王,如果小张玩游戏,则小王扣去小张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 
= 1000// 构造函数,初始化小张的钱。
}


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);
}


protected virtual void OnPlayGame(EventArgs e)
{
if(PlayGame != null)
{
PlayGame(
this,e);
}

}

}


// 定义委托处理程序
public delegate void PlayGameHandler(object sender,System.EventArgs e);

}


 

发表于 @ 2006年08月08日 11:16:00|评论(loading...)|编辑

新一篇: 代码大全读书笔记(一) | 旧一篇: ASP.NET常用小技巧

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © LileLTP