新手菜鸟学习C#的笔记总结 之事件
2014-01-27 15:34
465 查看
本人是初学菜鸟,有错误的地方欢迎大家指正。
什么是事件:事件可以看出委托的另一种方式,可以理解成某事件发生时的通知方式。事件—>委托-----方法一,方法二,方法三
事件如何定义:
1,定义一个事件发生时关联的委托
2,用这个委托定义一个事件。
事件如何使用:
1,编写触发事件的方法。(事件触发程序)
2,编写触发事件后要实现的方法。(事件处理程序)
3,将事件处理方法加入事件存储器。(事件+=方法名)
4,触发(调用) 事件触发程序。(方法调用)
I'm Person
触发我的是
NewTest.Touched
事件的注意点和规范:
1,事件的修饰符可以是new sealed || public protected internal private 访问修饰符
override abstract static virtual 只能使用这行中的一个,其中用了abstract不能用访问修饰符
(ps:这些除了访问修饰符,其他的修饰符与事件搭配怎么用呢?)
2,一般事件委托的定义为 public delegate void xxxEvenHandle(object source,EventArgs s);其中返回值总是void,source指出触发源,s指其他信息。
3,事件有存取器件。
4,事件的重写,感觉主要好像是重写事件触发方法,重写触发方法时好像必须重写事件(书上好像没有,我自己试了一下,不知道对不对),程序如下:
什么是事件:事件可以看出委托的另一种方式,可以理解成某事件发生时的通知方式。事件—>委托-----方法一,方法二,方法三
事件如何定义:
1,定义一个事件发生时关联的委托
2,用这个委托定义一个事件。
public delegate void MoveDelgate(object source,string info); public event MoveDelgate MoveEven;
事件如何使用:
1,编写触发事件的方法。(事件触发程序)
2,编写触发事件后要实现的方法。(事件处理程序)
3,将事件处理方法加入事件存储器。(事件+=方法名)
4,触发(调用) 事件触发程序。(方法调用)
namespace NewTest { public delegate void MoveDelgate(object source,string info); class Person { public event MoveDelgate MoveEven; public string info = "I'm Person"; public void Touch(object source)//触发事件的方法 { if (source != null) { MoveEven(source,info); } } } class Touched { public void say(object source,string info)//事件处理程序 { Console.WriteLine(info+"\n"+"触发我的是"+"\n"+source.GetType()); } } } namespace NewTest { class Program { static void Main(string[] args) { Person Zhang = new Person(); Touched T=new Touched(); Zhang.MoveEven += T.say;//将方法加入事件存储器 Zhang.Touch(T);//调用事件触发方法。 } } }输出结果
I'm Person
触发我的是
NewTest.Touched
事件的注意点和规范:
1,事件的修饰符可以是new sealed || public protected internal private 访问修饰符
override abstract static virtual 只能使用这行中的一个,其中用了abstract不能用访问修饰符
(ps:这些除了访问修饰符,其他的修饰符与事件搭配怎么用呢?)
2,一般事件委托的定义为 public delegate void xxxEvenHandle(object source,EventArgs s);其中返回值总是void,source指出触发源,s指其他信息。
3,事件有存取器件。
4,事件的重写,感觉主要好像是重写事件触发方法,重写触发方法时好像必须重写事件(书上好像没有,我自己试了一下,不知道对不对),程序如下:
public delegate void MoveDelgate(object source,string info); public delegate void MoveEventDelgate(object source); class Person { public virtual event MoveDelgate MoveEven; public string info = "开始移动"; public virtual void Touch() { if (info != null) { MoveEven(this,info); } } } class Touched { public void say(object source,string info) { Console.WriteLine(info+"\n"+"触发我的是"+"\n"+source.GetType()); } } class Student : Person { public override event MoveDelgate MoveEven;//重写事件 public override void Touch()//重写触发事件的方法 { if ( info!= null) { Console.WriteLine("重写触发方法"); MoveEven(this,info); } } } class Program { static void Main(string[] args) { Person Zhang = new Person(); Touched T=new Touched(); Student My = new Student(); Zhang.MoveEven += T.say; Zhang.Touch(); Console.WriteLine(); My.MoveEven += T.say; My.Touch(); } } 输出结果: 开始移动 触发我的是 NewTest.Person 重写触发方法 开始移动 触发我的是 NewTest.Student
相关文章推荐
- 新手菜鸟学习C#的笔记总结 之多态
- 新手菜鸟学习C#的笔记总结 之数组与集合(上)
- 新手菜鸟学习C#的笔记总结 之接口
- 新手菜鸟学习C#的笔记总结 之委托
- 新手菜鸟学习C#的笔记总结 之数组与集合(下)
- 新手菜鸟学习C#的笔记总结 之泛型
- 【新手学习笔记】c#26字母和数字间的转换
- C#学习笔记 事件
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
- C#学习笔记(三)—–C#高级特性中的委托与事件(下)
- Java------网络通信编程 之 菜鸟新手的学习总结
- [学习笔记]Asp.net(C#)菜鸟进级系列之引用类型
- 【unity3d-C#学习笔记】C#中的委托和事件
- 【C#】菜鸟教程学习笔记(二)
- selenium 学习笔记 ---新手学习记录(7) 问题总结(java)
- head first C#学习笔记:如何创建事件以及事件处理程序
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
- c#学习笔记之九 事件(event)的使用,一个简单的例子揭示其设计理念
- C#学习辛苦路 点点滴滴的总结 我的笔记