delegate学习笔记
来源:互联网 发布:mybatis中sql拼接 编辑:程序博客网 时间:2024/06/05 06:06
说说委托能做些什么,先来分析一下事件,这也是委托用得最多的地方。一般事件的初始化需要绑定一个事件处理函数,那么当事件触发的时候,处理函数会被调用,也就是说在事件处理函数可以明确的知道,此事件是被触发了。例如,点击窗体的上的Button,它会把Click事件反馈给窗体。很明显,委托是处理对象之间的信息交互。除了事件外,委托的大多用处都和此类似,那么这样使用的好处在于降低对象之间耦合性。
委托不同于以前函数指针的地方在于,可以绑定多个委托函数。
public delegate void HelloHandler( string Msg );
private void WriteHello1( string sMsg )
{
Debug.WriteLine( "WriteHello1:" + sMsg );
}
private void WriteHello2( string sMsg )
{
Debug.WriteLine( "WriteHello2:" + sMsg );
}
// delegate sample
HelloHandler hHello = new HelloHandler( WriteHello1 );
hHello += new HelloHandler( WriteHello2 );
hHello( "Hello World!" );
对于委托绑定多个函数,要注意的是不要把异常扩散出来,其次委托类型的返回值为“void”。
那么在使用委托的时候,首先要明白几个问题,等各个问题清楚了,委托原型也就自然出来了。
问题一,传递信息是什么,传递的时机是否固定,一次传递还是多次传递;
问题二,用委托是否合适;
问题三,哪一方是委托的调用端,而哪一方是委托的初始端;
问题四,委托的初始化放在哪里比较合适。
问题一是关键,这首先决定是否要使用委托来实现,其次如果要使用委托,那么需要确定委托函数类型。
委托不同于以前函数指针的地方在于,可以绑定多个委托函数。
public delegate void HelloHandler( string Msg );
private void WriteHello1( string sMsg )
{
Debug.WriteLine( "WriteHello1:" + sMsg );
}
private void WriteHello2( string sMsg )
{
Debug.WriteLine( "WriteHello2:" + sMsg );
}
// delegate sample
HelloHandler hHello = new HelloHandler( WriteHello1 );
hHello += new HelloHandler( WriteHello2 );
hHello( "Hello World!" );
对于委托绑定多个函数,要注意的是不要把异常扩散出来,其次委托类型的返回值为“void”。
那么在使用委托的时候,首先要明白几个问题,等各个问题清楚了,委托原型也就自然出来了。
问题一,传递信息是什么,传递的时机是否固定,一次传递还是多次传递;
问题二,用委托是否合适;
问题三,哪一方是委托的调用端,而哪一方是委托的初始端;
问题四,委托的初始化放在哪里比较合适。
问题一是关键,这首先决定是否要使用委托来实现,其次如果要使用委托,那么需要确定委托函数类型。
- delegate学习笔记
- 学习代理 笔记 delegate
- 学习笔记 - protocol,delegate
- C#学习笔记-delegate 委托
- iOS学习笔记3---delegate五步曲,轻松学会使用delegate
- iOS学习笔记6-delegate的使用
- 学习笔记--CLR via c#--Chapter17 Delegate
- Object C学习笔记16-委托(delegate)
- Object C学习笔记16-委托(delegate)
- delegate笔记
- Observer (C# Delegate - Event) - Design Patterns学习笔记(4)
- C#学习笔记之三(delegate, event, Make XML document
- C#学习笔记之三(delegate, event, Make XML document )
- C#3.0学习笔记之(一)--预备知识Delegate
- Qt Model/View学习笔记之七Delegate类
- 学习笔记-UITableView的数据源(dataSource)和代理(delegate)
- iOS Programming 学习笔记 - 02 Delegate and UITextField
- ios学习笔记:ios如何选择delegate ,notification,kvo
- Some tips of System Architect
- 鸡和蛋的问题及其内存结构
- Interface的显示隐式实现等
- 一小段puzzling的代码
- c#中TextBox输入提示功能
- delegate学习笔记
- windows映像劫持技术(IFEO)介绍
- VS2005 快捷键 速记
- 现阶段需要摒除的一些web开发菜鸟习惯
- 委托delegate的学习.+一个简单的委托和委托链的例子
- 压缩ASP.NET中的ViewState的超强改进方法
- 推技术应用的基本原理
- Ajax技术的未来和发展展望
- 穿过Proxy Server得到IP