`
leonardleonard
  • 浏览: 812135 次
社区版块
存档分类
最新评论

关于委托的精彩解说

阅读更多
作者:TomMax (笑望人生)        出处:csdn community
主  题: “.net百题问答的活动”--许多人问过的--《 C#委托及事件 》

作  者: TomMax (笑望人生)
信 誉 值: 100
所属论坛: .NET技术 C#
问题点数: 20
回复次数: 62
发表时间: 2004-07-13 07:52:33




有许多人问的,.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);

}
分享到:
评论

相关推荐

    C#事件与委托详细解说

    在C#编程语言中,事件(event)和委托(delegate)是两个核心概念,它们在构建事件驱动的程序中起到至关重要的作用。事件是对象间通信的一种方式,用于通知其他对象发生了特定的事情。委托则是C#中实现事件的关键,...

    短视频解说文案【爆款电影解说】

    而“爆款电影解说”则是短视频领域中的一个重要分支,它通过简短、精炼且吸引人的文案,将电影的主要情节、亮点和情感传达给观众,让人们在短时间内领略到电影的魅力。下面我们将深入探讨这一主题,讲解如何创作出...

    sTL解说 sTL解说 sTL解说 sTL解说 sTL解说 sTL解说

    很抱歉,但根据您给出的信息,"sTL解说 sTL解说 sTL解说 sTL解说 sTL解说 sTL解说" 的标题、描述和标签都只包含了重复的"STL解说"这一词汇,而没有提供具体的IT知识内容。同样,压缩包子文件的文件名称列表只有一个...

    影视解说电影解说剪辑教程从基础到入门视频课程下载整理.zip

    影视解说电影解说剪辑教程从基础到入门【视频课程】下载整理.zip含下载地址可存云盘

    运动会解说词100字.doc

    此外,解说词还能提高比赛的热度,吸引更多观众的视线,让他们被比赛的精彩所吸引,从而提升整个赛事的影响力。 最后,我们来探讨一下运动会解说词在不同场合的应用。在运动会的开幕式上,解说词要能够调动起在场每...

    影视解说文案生成器,影视解说文案生成器pjb

    4. **Microsoft.Web.WebView2.Core.xml、Microsoft.Web.WebView2.Wpf.xml、Microsoft.Web.WebView2.WinForms.xml**:这些XML文件通常包含关于DLL文件的元数据和文档,帮助开发者了解如何使用这些库函数。 5. **...

    关于太阳的解说---你对太阳了解多少

    ### 关于太阳的知识点 #### 一、太阳的形成与演化 **太阳的形成:** 太阳的形成可以追溯到大约46亿年前,当时一团巨大的分子云(主要由氢和少量氦以及尘埃组成)开始塌缩。这个过程是由于云团内部的重力作用引起的...

    电视解说词范文.doc

    电视解说词是电视节目中不可或缺的一部分,它在电视节目制作中发挥着至关重要的作用。通过精炼的文字,解说词能够补充画面无法传达的信息,使观众更好地理解节目内容。 首先,电视解说词有助于完善形象报道。在某些...

    食堂解说词、后勤现场会、学生公寓解说词.pdf

    食堂解说词、后勤现场会、学生公寓解说词.pdf

    解说词.doc

    解说词.doc

    AI配音几十种声音,电影解说,动漫解说必备

    "AI配音几十种声音,电影解说,动漫解说必备"这一标题揭示了AI技术在配音领域的广泛应用,它允许用户只需提供文案就能生成多种风格的语音音频。这种技术极大地丰富了配音的多样性和效率,为电影解说、动漫解说等提供...

    搬运国外影视解说视频伪原创-视频教程网盘链接提取码下载 .txt

    今天要讲的这个是很重要的底层逻辑,把这个逻辑运用到搬国外解说视频上,我们就能既轻松又无脑的产优质原创视频了,和头条西瓜中视频计划类似,比如油管就是,外国人一样也会做外语解说电影的视频,我们只需要把它...

    旅游景区解说系统规划PPT学习教案.pptx

    在当今旅游业蓬勃发展的背景下,旅游景区解说系统的规划成为了提升游客体验、实现资源保护与管理的关键。本篇学习教案将深入解析解说系统的概念、功能及规划策略,旨在帮助专业人士更好地理解和掌握这一领域的知识。...

    智慧城市体验厅解说词.docx

    智慧城市体验厅解说词.docx

    智慧城市宣传片解说词2017.docx

    智慧城市宣传片解说词2017.docx

    幻灯片放映带解说.zip

    【幻灯片放映带解说.zip】是一个包含JavaScript特效的资源包,主要目的是创建一个具有解说功能的多变横向全屏切换幻灯片。在网页设计和开发中,这样的功能常用于展示图片相册、产品介绍或者公司宣传等内容,能够吸引...

    文本解说加讲解

    尽管如此,我们可以尝试围绕“文本解说加讲解”这个主题来构建一些潜在的知识点,这些知识点可能会在一份关于IT技术的学习资料中出现: ### 知识点一:文本处理基础 1. **文本格式介绍**:常见的文本文件格式包括...

    关于ERP原理的解说,不是程序

    关于ERP原理的解说,不是源程序和代码,只是文字

    .漫画解说一键创作工具(附带教程).zip.js

    .漫画解说一键创作工具(附带教程).zip.js

    《白色严冬》电影解说文案

    《白色严冬》电影解说文案

Global site tag (gtag.js) - Google Analytics