首先进行分析:
思路:
先看下过程:猫叫->|人醒
|老鼠跑
所以我们可以给猫写个事件,这个事件由猫叫来触发,而人和老鼠中的某个方法
人醒和老鼠跑这两个方法注册到猫这个事件上就行了
结果,猫叫-人醒、老鼠跑
//public delegate void CatCallEventHandler(object sender, EventArgs e);
/// <summary>
/// 猫类
/// </summary>
class Cat
{
//定义一个猫叫事件的委托
public delegate void CatCallEventHandler(object sender, EventArgs e);
//定义事件
public event CatCallEventHandler CatCall;
protected virtual void OnCatCall(EventArgs e)
{
CatCallEventHandler Handler = CatCall;
if (Handler != null)
{
Handler(this, e);
}
}
/// <summary>
/// 触发事件的方法
/// </summary>
public void cCall()
{
Console.WriteLine("猫叫了!");
OnCatCall(new EventArgs());
}
/// <summary>
/// 委托方法
/// </summary>
/// <param name="Handler"></param>
/// <param name="sender"></param>
/// <param name="e"></param>
public void cCall(CatCallEventHandler[] Handler, object sender, EventArgs e)
{
Console.WriteLine("猫叫了!");
foreach (CatCallEventHandler h in Handler)
{
h(sender, e);
}
}
}
/// <summary>
/// 人类
/// </summary>
public class Man
{
private string _Name;
public Man() { }
public Man(string Name)
{
_Name = Name;
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public void ManAwake(object sender, EventArgs e)
{
Console.WriteLine("Man" + _Name + "醒了!");
}
}
/// <summary>
/// 老鼠类
/// </summary>
public class Mouse
{
private string _Name;
public Mouse() { }
public Mouse(string Name)
{
_Name = Name;
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public void MouseRunAway(object sender, EventArgs e)
{
Console.WriteLine("Mouse" + _Name + "跑了!");
}
}
public class Test
{
//static void Main(string[] args)
//{
// Cat c = new Cat();
// Man m = new Man("张三");
// Man x = new Man("小子");
// Mouse mo = new Mouse("小白");
// Cat.CatCallEventHandler[] Hander = { m.ManAwake, x.ManAwake, mo.MouseRunAway };
// //c.CatCall += new Cat.CatCallEventHandler(m.ManAwake);
// //c.CatCall += new Cat.CatCallEventHandler(mo.MouseRunAway);
// //c.CatCall += new Cat.CatCallEventHandler(x.ManAwake);
// //c.cCall();
// c.cCall(Hander, new object(), new EventArgs());
//}
}
转载别人的做法,纯粹学习你分析问题的思路,没别的意思
分享到:
相关推荐
此为《C#与.NET 4高级程序设计:第5版》中文版一书的源码。 Amazon超级畅销书,权威新版王者归来 全面涵盖C# 2010,用IL深入揭示语言特性 多位微软MVP联手翻译,名著佳译相得益彰 本书是C# 领域久负盛名的经典著作...
该压缩包包含一个基于C#实现的老鼠走迷宫程序,具有图形用户界面,并且支持加载自定义地图。这个项目可以被看作是C#编程、算法和数据结构的实践应用,尤其对于初学者来说,这是一个很好的学习资源。 首先,我们要...
Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向对象程序设计、C#程序设计、C# Web...
C# WinForm 程序的界面多语言切换 C# WinForm 程序的界面多语言切换是一种常见的需求,特别是在全球化的今天。在本文中,我们将介绍一种只需对现有代码做较小改动的方法来实现 WinForm 程序的界面多语言切换。 ...
此为《C# 程序设计教程 第2版》一书的配套源码 作者:郑阿奇 梁敬东 主编 朱毅华 时跃华 赵青松 编著 出版日期:2011年08月04日 C#程序设计教程(第2版)以Microsoft. Visual Studio.NET 2008/2010作为平台,在继承...
《C#程序设计及应用教程(第3版)》是一本深入浅出的C#学习教材,由马骏主编,其特色在于结合丰富的实例和课后习题来帮助读者掌握C#编程的基础与进阶技巧。这个压缩包包含了该书各章节的习题解答,覆盖了从基础到...
《C#程序设计课件(李春葆)》是...总之,《C#程序设计课件(李春葆)》是一份宝贵的教育资源,它系统地介绍了C#编程语言的关键概念和技术,对于任何希望在软件开发领域取得进步的人来说,都是一个不可多得的学习资源。
《马骏-第3版-C#程序设计教程》是一本深入浅出的C#学习教材,专注于提升读者的编程能力和实践技巧。此压缩包包含了该书的所有上机实验源代码,是学生考试复习和平时作业的重要参考资料。通过这些源代码,我们可以...
这本书通过200个精心设计的例子,旨在帮助读者从零基础开始,逐步掌握C# 2.0的核心概念和技术,最终达到能够独立编写应用程序的水平。下面将详细阐述C# 2.0中的关键知识点,并结合实例进行解释。 1. **C#基础语法**...
题目要求通过C#实现一个模拟场景:当猫(Cat)大叫(Cry)时,老鼠(Mouse)会逃跑,主人(Master)会被惊醒。同时,要考虑代码的联动性和可扩展性,意味着猫的叫声可能会触发更多的联动效应。 首先,我们定义了三...
金旭亮《C#面向对象程序设计》教案之1:CSharp程序设计语言与dotNET面向对象程序设计概述。 后继教案将陆续发布,请关注作者的博客更新信息:http://blog.csdn.net/bitfan
《C#程序设计案例教程》是一本专注于C#编程实践的教材,旨在通过丰富的实例帮助学习者掌握C#语言的核心概念和技术。C#是微软公司推出的一种面向对象的编程语言,广泛应用于Windows桌面应用、游戏开发、Web服务以及...
书中介绍了C# 的各种语言构造、.NET 2.0 的类、核心API 、公共中间语言(CIL)、动态程序集和ASP.NET 扩展等内容;同时也介绍了.NET 3.0 和.NET 4 中新的编程API,包括WPF 、WCF 和WF 的功能;另外,还介绍了最新的...
本教程“C#入门:基于C#的Windows窗口应用程序教程与实例”是为那些希望踏入编程世界的初学者设计的,它将引导你从零开始学习如何使用C#和Visual Studio开发环境构建功能丰富的Windows应用程序。 首先,让我们深入...
此资源吐血推荐 面向C#语言 介绍程序设计数据结构和算法!共分17章!数据结构与算法的学习对于进行软件开发的专业程序员而言是非常关键的。虽然有许许多多关于数据结构与算法的书籍,但是这些书籍通常都是大学教材,...
Console.WriteLine("猫大叫一声!"); foreach (Observer obss in observers) { obss.Response(); } } } ``` `CCat`类实现了`Subject`接口,并重写了`AimAt`方法来添加观察者,以及`Cry`方法来触发事件。当猫...
《C#程序设计经典教程》是一本全面而系统的C#开发技术指南,旨在帮助读者深入理解和熟练掌握C#编程语言。C#,全称为“C Sharp”,是由微软公司推出的面向对象的编程语言,广泛应用于Windows应用程序开发、游戏开发、...
这是一个在.NET环境中,用c#实现的抢答器。采用c#的remoting技术。有服务器端,多个客户端(假设最多3个),用winform实现界面。有声音提示。当然网上的资料给了我极大的帮助,现奉献给大家,仅供学习参考使用。 ...