委托(Delegate)简介
来源:互联网 发布:网站美工要求 编辑:程序博客网 时间:2024/05/16 16:00
1.什么是委托?是用来干什么的?
委托是一个类,它定义了方法的类型,使得可以将定义的方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
委托保存的是对函数(function)的引用,即保存对存储在托管堆(managed heap)中的对象的引用,而不是实际值。
2.代码定义格式
在C#中使用delegate关键字定义委托。
[public/private/protect]修饰符 delegate [string/int/void]类型 name方法名();
如:public delegate void student();
3.简单用例1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
}
委托可以动态的与任何方法关联(但必须保证关联的方法与委托定义的方法类型相同、参数相同),上面的例子里就是将委托与message方法进行了关联。
委托是对方法的包装。实现了对象与方法的隔离,增强了拓展性。
4.简单用例2
本示例演示组合委托。委托对象的一个有用属性是,它们可以“+”运算符来组合。组合的委托依次调用组成它的两个委托。只可组合相同类型的委托,并且委托类型必须具有 void 返回值。“-”运算符可用来从组合的委托移除组件委托。
using System;
delegate void MyDelegate(string s);
class MyClass
{
}
输出结果:
Invoking delegate a:
Invoking delegate b:
Invoking delegate c:
Invoking delegate d:
5.简单用例3
本实例展示泛型委托,即参数的类型不确定,以达到更高的灵活性:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
}
输出的结果就是:
Text1100
委托,其实就是对方法提供一个模板、一个规范、一个定义,就好比接口是对类得抽象,委托可以理解为对方法的抽象。从而实现对方法的封装。
委托一个最主要的用途,就是事件。也就是说委托常常与事件联系在一起。
在下一博文中,我将介绍如何利用委托来自定义事件。
- 委托(Delegate)简介
- C#中的delegate(代理/委托),简介说明(zz)
- 委托(Delegate)
- 委托(Delegate)
- 委托(Delegate)
- 委托(Delegate)
- 委托(Delegate)
- 委托(Delegate)
- 委托(Delegate)
- 什么是委托(Delegate)
- 什么是委托(Delegate)
- 委托(Delegate)机制
- 委托(delegate)模式
- 委托(delegate)
- 委托(Delegate)
- C# 委托(Delegate)
- C# 委托(Delegate)
- C# 委托(Delegate)
- iOS中跳转到一个tabbar对应的界面时,tabbar联动效果
- 设计模式初见随笔
- Fragment与Fragment之间的通信
- TortoiseSVN客户端重新设置用户名和密码
- 汇编语搜索言中32位CPU多出的两个FS、GS段寄存器,全称是什么啊
- 委托(Delegate)简介
- [案例]有了它,看病不再难啦~
- Mac OS X Mavericks or Yosemite 安装Nginx、PHP、Mysql、phpMyAdmin
- 统计页面访问量(JSP)
- Objective-C ---内存管理
- 判断请求是否来自手机端
- 四款工具顺利实现Python与JavaScript间的代码转换
- 利用委托自定义事件
- JAVA的集合类型有哪些