C# 事件委托有关
委托事件什么的,还是有点问题
如下代码一直都会用,但是具体不知道什么原理
- C# code
btn.Click += new delegate{Close();};还有,最近看了一篇帖子弄清楚,.net的委托事件的规范(以前搞不懂EventArgs,也没去问),想问一下怎么样查看C#里的比如Window类的源代码之类的。
[解决办法]
事件其实就是一个 多路广播委托(多播委托) 具体可参见MSDN。
想看源码用Reflector吧。
[解决办法]
委托其实可以看成一种数据类型,不过这个数据类型是你自己定义的,
这个数据类型比较特别:它规定了实现它的方法的结构原型,也就是你的事件的类型。
因此:可以说事件是一个特殊的委托类型。
但是事件:可以订阅多次。多次订阅则会调用相应的处理。(可以看看什么是事件轮循)
看代码:
- C# code
C# codeusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); //订阅多次事件 this.Load += new EventHandler(Form1_Load); //加事件:+1 this.Load += new EventHandler(Form1_Load1);//加事件:+1 this.Load += new EventHandler(Form1_Load1);//加事件:+1 //当事件激发时,C#会轮循事件的订阅。也就是说:我们在往Load事件中加处理方法。 //参考类似代码:int n=0;n+=1; //移除事件 this.Load -= new EventHandler(Form1_Load1);//-1,减事件。是不是类似我们的:int n=0;n+=1; } void Form1_Load(object sender, EventArgs e) { MessageBox.Show("Form1_Load"); } void Form1_Load1(object sender, EventArgs e) { MessageBox.Show("Form1_Load1"); } }}