c#笔记(十三)——委托事件

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Weituoshijian

{

//英雄类

class Hero

{

//属性……

//private int hp;

public delegate void AttackHandler();

//攻击方法1

public void Attack(AttackHandler method)

{

method();

}

//攻击方法2

public void Attack(int index)

{

//这样写不灵活,扩展型太差

if (index==0)

{

//ToDo……

//SF.Skill_Q();     回调

Skill_Q();

}

else if (index==1)

{

Skill_W();

}

else

{

Console.WriteLine("普通攻击" );

}

}

//一堆技能

public void Skill_Q()

{

Console.WriteLine("我正在使用Q技能" );

}

public void Skill_W()

{

Console.WriteLine("我正在使用W技能" );

}

}

//学生,玩游戏,让班长盯梢,老师来了告诉我一声

class Student

{

//接受消息

public void ReceiveMsg(string msg)

{

Console.WriteLine("我接收到消息:" + msg);

}

//让班长盯梢

public void WatchDog(Master master)

{

//老师来了回调那个方法

master.action += ReceiveMsg;

//告诉你啥?

master.msg = "老师来了" ;

}

}

class Master

{

//可以接活:事件绑定

//事件就是委托的封装,外面绑定,不能调用

public event Action< string> action;

//暗号

public string msg;

//挣钱

public void EarnMoney()

{

action(msg);

}

//盯梢

public void WatchTeacher()

{

while (true )

{

int num = int .Parse(Console.ReadLine());

if (num == 10)

{

EarnMoney();

break;

}

}

}

}

class Program

{

static void Main(string[] args)

{

////创建一个对象

//Hero SF = new Hero();

////调用攻击方法

//SF.Attack(SF.Skill_Q);

Student s = new Student();

Master m = new Master();

s.WatchDog(m);

m.WatchTeacher();

Console.ReadKey();

}

}

}

时间: 2024-12-28 21:18:53

c#笔记(十三)——委托事件的相关文章

C#笔记-委托&amp;事件

1.1.委托 可以认为委托是持有一个或多个方法的对象.被执行时会执行他所有“持有” 的方法 可以把它看一个类型安全的, 面向对象的c++函数指针 委托和类一样, 是一种用户自定义的类型.而委托持有一个或多个方法. delegate void Mydel(int value); // 声明一个委托类型 #声明一个委托, 看上去和方法声明相似,只是没有实现块. #使用该委托类型声明一个委托变量. #创建一个委托的对象,赋值给委托变量.新的委托对象包括指向某个方法的引用,签名(包括ref,out)和返

[JS]笔记14之事件委托

-->什么是事件委托-->事件委托原理-->事件委托优点-->事件源 / 目标源 一.什么是事件委托 通俗的讲,onclick,onmouseover,onmouseout等这些就是事件 委托,就是这个事件本来应该加在某些元素上的,而你却加到其他元素上来完成这个事件. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &

javascript高级程序设计 第十三章--事件

javascript高级程序设计 第十三章--事件js与HTML的交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流:事件流描述的是从页面中接收事件的顺序,IE的是事件冒泡流,Netscape的是事件捕获流,这个两个是完全相反的事件流概念. 事件冒泡:由最具体的元素接收,然后逐级向上传播到更高级的节点,即事件沿DOM树向上传播,直到document对象. 事件捕获:不大具体的节点应该更早接收到事件,相当于沿DOM节点树向下级传播直到事件的实际目标,在浏览器中,是

【转】C#笔记之委托(Delegate)(二)

原文:小贱学C#笔记之委托(Delegate)(二) 上次聊了下委托(delegate),简单的介绍了下使用方法,顺便问下你家保姆干活还行么?今天我们来看看事件(event). 事件实际上是一种特别的委托,通常声明事件的话要声明一个委托,它是这样的: [code]csharpcode: public delegate void EventHandler(object sender, EventArgs e); 是不是发现了些什么区别,对,参数!(object sender,EventArgs e

【转】C#笔记之委托(Delegate)(一)

原文: 小贱学C#笔记之委托(Delegate)(一) 本来因为之前接口那篇文章很多坛友给提了一些意见,花了一上午事件码了篇接口和抽象类比较和理解,谁知道...谁知道...不就打错了验证码么,木有了全都木有了?!恢复的只有一个标题好伤心~要再来一遍,今天是真没那个心情了,收拾收拾我这受伤的心灵,换个话题,抽象类就等下一回吧!好了,开始! 首先我们先理解下委托到底有什么用.我的理解呢就是,我找个人帮我干活,嘿嘿~不理解?等我给你个情景,一个是我家里没请保姆,一个是我请了个保姆. [code]csh

《纵向切入ASP.NET 3.5控件和组件开发技术》笔记:高效率事件集合对象

在之前讲的几个例子中,使用的是最普通的定义事件方法,比如KingTextBox中事件是这样定义的:/// <summary>/// 获得本书更多内容,请看:/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx/// </summary>public event EventHandler TextChanged;protected virtual void OnTextChanged(EventArgs

读书笔记(委托)

委托回调静态方法和实例方法有何区别 当委托绑定静态方法时,内部的对象成员变量_target会被设置成null 当委托绑定实例方法是,_target将会设置成指向该实例方法所属的一个实例对象 当委托被执行时,该对象实例将会用来调用实例方法 1 class DelegateReturn 2 { 3 public delegate String GetStringDelegate(); 4 5 static string GetTypeName() 6 { 7 return typeof(Delega

C#委托事件

1.委托事件关键词:delegate 2.在声明函数的时候在函数类型后面加上 例:public delegate int Test(int x,int y) 3.定义委托变量:Test t1,委托接收的是方法引用. 4.委托变量可以当成函数的调用.用赋值“=” 委托变量 = 函数名 5.委托类型的变量,可以引用任何一个满足要求的方法,类似于C语言的函数指针. 6.一个委托变量可以使用“+=”挂接多个方法,也能使用“-=”动态地移除某个方法的引用. 7.引用多个方法的委托变量称为“多路委托”. 8

IDA学习笔记--VS2008按钮事件捕捉

http://blog.csdn.net/ccnyou/article/details/8521611 IDA笔记--VS2008按钮事件捕捉 用到工具: IDA Proc C32Asm Rescope VS2008 LordPE 实例程序:MFCDemo.exe(附下载链接),我们目标是找到Button1对应的函数的地址处 附件包含:博客文章原文文档,文章中用到的MFCDemo程序. 下载链接:http://download.csdn.net/detail/ccnyou/5012040 1,首

重构笔记——隐藏“委托关系”

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43769929         在上一篇文章中介绍了"将类内联化".本文将介绍"隐藏委托关系"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:客户通过一个委托关系来调用另一个对象. 解决:在服务类上建立客户所需的所有函数,用以隐藏委托关系. 动机 我们都知道,"封装&q