黑马程序员技术交流社区
标题:
C#中的委托是什么?事件是不是委托?
[打印本页]
作者:
redlong
时间:
2014-4-5 19:13
标题:
C#中的委托是什么?事件是不是委托?
C#中的委托是什么?事件是不是委托?事件和委托的关系是什么?
作者:
lmm
时间:
2014-4-5 20:56
委托是类型, 而事件是对象. 两者不是同一个东西.
C#中定义的标准事件, 相对于直接使用委托实现的事件, 可以说是一个封装的类型. 只能注册和注销的事件.
作者:
zou5268237
时间:
2014-4-6 12:54
1.委托可以把一个方法作为参数代入另一个方法;
2.委托可以理解为指向一个函数的指针;
3.委托和事件没有可比性,因为委托是类型,事件是对象;
4.事件的内部是用委托实现的;
5.因为对于事件来讲,外部只能“注册自己+=,注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法;
6.事件只能+=,-=,不能=。
7.事件是用来阉割委托实例的,类比用一个自定义类阉割List;
8.事件只能add,remove自己,不能赋值。
作者:
@雪飞鸿
时间:
2014-4-6 18:16
委托实现了将事件作为参数在方法中进行传递;
事件可以看做是委托类型的变量;
作者:
一片白
时间:
2014-4-7 17:10
这个太难讲了。
介绍两个网址,我学习了后,对于事件和委托有了一些了解,希望对你也有帮助。
http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html
http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html
作者:
@雪飞鸿
时间:
2014-4-7 19:00
一片白 发表于 2014-4-7 17:10
这个太难讲了。
介绍两个网址,我学习了后,对于事件和委托有了一些了解,希望对你也有帮助。
http://www.c ...
讲解的不错······
作者:
itheima_xu
时间:
2014-4-7 19:19
//定义委托,委托跟类是同级别的,本质也就是一个类,这个类继承于MultcastDelegate而MultcastDelegate继承于Delegate
public delegate void DGSayHi(DateTime clickTime);
//事件 Event
// 如果所有地方都是用委托,那么有可能发生这种情况:一个委托对象,已经注册了若干方法,但某个程序员不知道,直接将委托 设置为 null,清空了所有的方法。
//而事件 可以 为我们限制在外部访问某个类里的 委托对象 的方式,只能在外部通过 +=/-=操作委托对象。
//定义事件(使用委托时,加个event关键字)
public event DGSayHi dgSayHi;
//1定义方法 其签名必须与 要添加到的委托 的签名一致(就是返回值类型与参数类型及个数)
public void TestSayHi(DateTime clickTime)
{
MessageBox.Show(clickTime.ToString());
}
private void btnTest_Click(object sender, EventArgs e)
{
//1.创建委托对象,传入 与委托具有相同签名的方法
DGSayHi dgSayhi = TestSayHi; // 相当于 DGSayHi dgSayhi = new DGSayHi(TestSayHi);
//2.调用委托里的方法,并为委托里的方法 传入参数
dgSayhi(DateTime.Now); //相当于 dgSayhi.Invoke(DateTime.Now);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2