C#中委托的理解和使用
2013-12-27 06:38
281 查看
C#中有一种特殊的回调(callback)函数叫委托,委托是一种定义方法签名的类型,当需要把方法传递给其他方法时就要用到委托。
我们常常习惯把数据作为参数传递给方法,而当某个方法执行的操作不是针对数据进行的,而是对另一个方法进行操作,这时就需要用到委托。
委托的定义:
delegate void IntMethod(int i);
在这个示例中,我们定义了一个委托IntMethod,并指定该委托每个实例都包含一个方法的细节,该方法带有Int类型的参数,返回void。其语法类似于方法的定义,但没有方法体,定义的前面要加上关键字deletage。,定义一个委托相当于定义一个类,所以可以在定义类的内部和外部定义委托,也可以在命名空间定义为顶层对象,根据定义的可见性,可以在委托定义上添加一般的访问修饰符:public,private,proteted等:
public delegate void IntMethod(int i);
下面通过一个简单的示例来理解学习委托:
首先创建一个类,该类中定义了两个方法,供委托回调
![](http://img.blog.csdn.net/20131229001644140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3U1MTAxNjA4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接下来创建一个委托回调方法的类
![](http://img.blog.csdn.net/20131229001708734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3U1MTAxNjA4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
程序执行步骤:1.创建一个委托DoubleDelegate返回double类型,带有一个double类型参数,
2.创建了一个DoubleDelegate委托类型的数组,在数组里绑定了Program类中的两个方法,
3.通过for循环,遍历委托数组中的方法
4.执行计算显示数字方法(ProcessAndDisplayNumber),将委托数组遍历的索引和参数值分别传给该方法对应的两个变量上
5.委托类型变量action绑定了传进来的委托数组索引代表的方法,所以当调用这个action时相当于调用了它传进来的方法,将value值传给action委托的参数,相当于传给action代表的方法,程序自然跳转到绑定的该方法执行相关操作,然后将值在返回给result变量,如此循环,最终输出结果如下
![](http://img.blog.csdn.net/20131229001727125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3U1MTAxNjA4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
由此示例可以了解到,当方法绑定在一个委托上时,调用委托就是调用绑定在该委托上的方法
如有出错,望大神门指教,万分感谢!
我们常常习惯把数据作为参数传递给方法,而当某个方法执行的操作不是针对数据进行的,而是对另一个方法进行操作,这时就需要用到委托。
委托的定义:
delegate void IntMethod(int i);
在这个示例中,我们定义了一个委托IntMethod,并指定该委托每个实例都包含一个方法的细节,该方法带有Int类型的参数,返回void。其语法类似于方法的定义,但没有方法体,定义的前面要加上关键字deletage。,定义一个委托相当于定义一个类,所以可以在定义类的内部和外部定义委托,也可以在命名空间定义为顶层对象,根据定义的可见性,可以在委托定义上添加一般的访问修饰符:public,private,proteted等:
public delegate void IntMethod(int i);
下面通过一个简单的示例来理解学习委托:
首先创建一个类,该类中定义了两个方法,供委托回调
接下来创建一个委托回调方法的类
程序执行步骤:1.创建一个委托DoubleDelegate返回double类型,带有一个double类型参数,
2.创建了一个DoubleDelegate委托类型的数组,在数组里绑定了Program类中的两个方法,
3.通过for循环,遍历委托数组中的方法
4.执行计算显示数字方法(ProcessAndDisplayNumber),将委托数组遍历的索引和参数值分别传给该方法对应的两个变量上
5.委托类型变量action绑定了传进来的委托数组索引代表的方法,所以当调用这个action时相当于调用了它传进来的方法,将value值传给action委托的参数,相当于传给action代表的方法,程序自然跳转到绑定的该方法执行相关操作,然后将值在返回给result变量,如此循环,最终输出结果如下
由此示例可以了解到,当方法绑定在一个委托上时,调用委托就是调用绑定在该委托上的方法
如有出错,望大神门指教,万分感谢!
相关文章推荐
- C# 2008 windows mobile 6调试环境
- C#中的ThenBy是如何实现的
- C# winform 全局异常处理
- C#通过Web获取客户端的IP与Mac地址实现
- C#中的ThenBy是如何实现的
- C# Socket的Send问题
- C# webBrowser 自动表单提交问题
- C# webBrowser控件使用心得
- c#控制台绚丽动画(带背景音乐)
- C#中的委托与事件(二)
- C# 获取wave文件信息【转】
- C#中的委托与事件(一)
- C# Socket编程
- 用C#模拟实现扑克牌发牌、排序程序。
- C# 利用BarcodeLib.dll生成条形码(一维,zxing,QrCodeNet/dll二维码)
- Mark 创建路径(c#)-动态分段
- Mark 创建路径(c#)-动态分段
- C#string数组转换到int数组并得到最大最小值
- C#检测两个文件内容是否相同
- c# p/invoke 无法加载指定的dll 找不到指定的模块 解决方法