速结——C#委托和事件

xingxingbanyue 2011-09-16 09:33:24
委托和事件什么情况下用,怎么用,请高手指点。
...全文
1319 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenliangqq 2011-09-21
  • 打赏
  • 举报
回复
呵呵,给力的解释,mark
Joson.e8love 2011-09-21
  • 打赏
  • 举报
回复
mark,学习 mark,学习
dqizi123 2011-09-20
  • 打赏
  • 举报
回复
mark,学习
lifelongemail 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 luozhongrong_06 的回复:]

引用 1 楼 hztltgg 的回复:

a调用b

先写b,后写a,没问题

先写a,后写b,就要用委托,事件就是用委托实现的一种更方便的方法


相当的经典,豁然开朗,终于明白了什么是委托了。
[/Quote]

+1
xiven 2011-09-18
  • 打赏
  • 举报
回复
.Net使用委托的形式实现和完善了函数指针。

delegate是面向对象、类型安全、可靠的受控对象。

事件是用多播委托来实现的,委托为事件绑定事件处理程序。
oowangoo 2011-09-18
  • 打赏
  • 举报
回复
mark 学习
没昵称也有 2011-09-18
  • 打赏
  • 举报
回复
1 委托是一种类型,具有类型安全
2 定义委托就是定义 能传给他行的方法的签名(返回值,和参数类型,个数)一般形式,或称为方法的模板,查看IL 可以发现委托类型跟一般类型比较缺方法体
3 委托类型有一个方法列表,可以传给他符合条件的多个方法
4 委托变量可以加减运算
5 有了委托,我们就可以在程序运行期间动态传递方法
luozhongrong_06 2011-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hztltgg 的回复:]

a调用b

先写b,后写a,没问题

先写a,后写b,就要用委托,事件就是用委托实现的一种更方便的方法
[/Quote]

相当的经典,豁然开朗,终于明白了什么是委托了。
Tracy_zyl 2011-09-17
  • 打赏
  • 举报
回复
利郎商务男装~[Quote=引用 32 楼 aspnetchengxu 的回复:]

引用 2 楼 shine_fly 的回复:

事件:
1、定义事件(是一种变量):
public event EventHandler tick;
2、添加事件处理
tick += new EventHandler (tickHandler)
//函数名称与上面定义的处理函数相同
public void tickHandler()
{
MessageBox.show("Tic……
[/Quote]
chengwd2008 2011-09-17
  • 打赏
  • 举报
回复
如果你学过C或C++ 那我告诉你委托机制就是函数指针包装了下 没啥区别
風雲工作室 2011-09-17
  • 打赏
  • 举报
回复
全他妈的扯淡,Basic就没有这么复杂的逻辑;什么先不先定义,多么垃圾低级
Jueyoung 2011-09-16
  • 打赏
  • 举报
回复
发晚了,,, 没分。。。。
Jueyoung 2011-09-16
  • 打赏
  • 举报
回复
事件模式

1. 定义事件参数 即: xxxEventArgs:EventArgs
2. 定义EventHandler
public event EventHandler <xxxEventArgs> yyChanged

3. 引发事件
protect virtual void OnyyChanged(xxxEventArgs e)
{
//.....some logic
yyChanged(this,e);
}


其中,
2. 定义EventHandler
省略了定义delegate
因为.net提供了泛型的EventHandler, 所以,就可以直接用它。 如果不想用这个泛型版本
可以自己定义个delegate

比如:

public delegate void yyyyChangedEventHandler(object sender, xxxEventArgs);

public event yyyyChangedEventHandler yyChanged
hztltgg 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 xingxingbanyue 的回复:]
引用 22 楼 hztltgg 的回复:

引用 18 楼 xingxingbanyue 的回复:
引用 1 楼 hztltgg 的回复:

a调用b

先写b,后写a,没问题

先写a,后写b,就要用委托,事件就是用委托实现的一种更方便的方法


能否再详细点,刚接触委托,不容易理解


那么你是如何理解的呢


为什么“先写a,后写b,就要用委托”?我想知道……
[/Quote]

这个就是设计方法的问题了,从上到下比从下到上要抽象,一开始可以不拘泥于细节,而且有时候甚至都没办法实现从下到上,比如微软提供你按钮控件,但是如果要从下到上,微软如何提供?他又不知道你的按钮单击要执行写什么东西,怎么能帮你先写好呢?
cjh200102 2011-09-16
  • 打赏
  • 举报
回复
GOOD
萧炎 2011-09-16
  • 打赏
  • 举报
回复
LZ的 速结 两个字很诱人啊 哈哈...
萧炎 2011-09-16
  • 打赏
  • 举报
回复
人满为患啊 上面的回复我就不用看了 肯定有适合LZ的了
a78782295 2011-09-16
  • 打赏
  • 举报
回复
洁辉 2011-09-16
  • 打赏
  • 举报
回复
学习了
xingxingbanyue 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 hztltgg 的回复:]

引用 18 楼 xingxingbanyue 的回复:
引用 1 楼 hztltgg 的回复:

a调用b

先写b,后写a,没问题

先写a,后写b,就要用委托,事件就是用委托实现的一种更方便的方法


能否再详细点,刚接触委托,不容易理解


那么你是如何理解的呢
[/Quote]

为什么“先写a,后写b,就要用委托”?我想知道为什么要先写a后写b?委托又是如何是实现呢?
加载更多回复(28)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧