委托的定义,与简单使用
在.NET Framework中,委托是一种数据结构,它引用静态方法或者引用类实例该类的实例方法。
委托是委托类型的实例。只有当方法的签名与委托类型所指定的签名完全匹配时,委托才能引用方法。当委托引用实例方法时,委托储存对该方法入口点的引用及对称为目标的对象的引用,该对象是对其待用该方法的类的实例。实例方法的目标不能为空引用。当委托引用静态方法时,委托储存对该方法入口点的引用。静态方法的目标为空引用。
声明委托方法如下
public delegate void ProcessBookDelegate(book book);
声明一个新的委托类型时,每个委托类型都描述参数的数目和类型,以及它可以封装的方法的返回值类型。每当需要一组新的参数类型或新的返回值类型时,都必须声明一个新的委托类型。
实例化委托即在声明了委托类型后,必须创建委托对象并使之与特定方法关联。与所有其它对象类似,新的委托对象用NEW表达式创建,一旦创建了委托,它所关联到的方法便永不改变。
调用委托即在委托对象后,通常将委托对象传输给讲调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,扩在括号内)调用委托对象。
下面有一个例子:
首先声明一个DelegateFeedBack类
public class DelegateFeedBack
{
public DelegateFeedBack()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string PrintString(int intValue)
{
if (intValue > 0)
{
return "这是一个正数";
}
if (intValue < 0)
{
return "这是一个负数";
}
return "这是一个零";
}
public string PrintUpDown(int intValue)
{
if (intValue > 0)
{
return intValue.ToString() + ">0";
}
if (intValue < 0)
{
return intValue.ToString() + "<0";
}
return intValue.ToString() + "=0";
}
}
public delegate string DelegatePrint(int intValue);
protected void Page_Load(object sender, EventArgs e)
{
DelegateFeedBack myDlegate = new DelegateFeedBack();
DelegatePrint printString = new DelegatePrint(myDlegate.PrintString);
DelegatePrint printletter = new DelegatePrint(myDlegate.PrintUpDown);
Response.Write(printString(10)+"<br>");
Response.Write(printletter(-100) + "<br>");
}
转载于:https://blog.51cto.com/443065/91162
委托的定义,与简单使用相关推荐
- UE4 委托(代理)简单理解
资料来源于: UE4官方文档 UE4 C++ -- 代理 UE4中的代理(Delegate)使用总结 (UE4 4.20)UE4的委托(Delegate)使用 什么是委托Delegates (网上大部 ...
- mysql 管理instance_对于多instance安装的MYSQL来说,起停的过程相对复杂,可以定义一些简单的脚本来简化日常的管理。1# 环境变量脚本[mysql@mysql01 scri...
对于多instance安装的MYSQL来说,起停的过程相对复杂,可以定义一些简单的脚本来简化日常的管理. 1# 环境变量脚本 [mysql@mysql01 scripts]$ cat mysql_en ...
- 数据结构之队列的定义与简单实现
队列的定义与简单实现 和栈相反,队列是一种先进先出(FIFO)的线性表,队列仅在线性表的两端进行操作: 1.队头(Front):取出数据元素的一端: 2.队尾(Rear):插入数据元素的一端. 现实中 ...
- 实验3.2 定义一个简单的Computer类
题目 定义一个简单的Computer类,有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等,有两个公有成员函数run.stop.cpu为CPU类的一个对象,ram为RAM类的一个对象,c ...
- 数据库实验之《数据定义与简单查询》
Mysql数据定义与简单查询 博客由来 实验目的 实验内容 查询练习 寄语 完整源码 博客由来 本人在校学生,希望能借助平台记录下自己的成长,同时也希望分享自己的一些独特的想法.本次上机使用的平台:W ...
- C#委托的定义 以及使用方式详解,更简单的理解委托。
委托的声明及定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得 ...
- rj45接口引脚定义_简单修复数控主机网络接口通讯故障
中国电路板维修人关注平台:技术分享.学习交流.案例视频.行业招聘资讯 [案例:某品牌数控主机网络接口无法通讯故障维修] 故障现象:网络接口无法使用,IP地址为192.168.1.101 解决方法: 此 ...
- PCI-E的针脚定义的简单讲解(备忘)
PCI-E是什么呢? 简而言之,PCI-E是英特尔在2001年提出的一种取代以前的PCI.AGP的计算机内部互联总线标准.特点是串行(以前的ISA.PCI.AGP等都是并行的),并且支持1到32条通道 ...
- C语言详解系列——函数的认识(4)函数的声明与定义,简单练习题
文章目录 函数的声明与定义 函数的声明 函数的定义 简单的练习题 写一个函数可以判断一个数是不是素数 写一个函数实现二分查找 写一个函数,每调用一次这个函数,就会将 num 的值增加1. 函数的声明与 ...
- c++定义一个简单的银行账户类
用c++来定义一个简单的银行类: //编程实例:BankAccount类(简单版本)#include <iostream> using namespace std;//定义银行账户的类: ...
最新文章
- Android列表控件选项中添加进度框ProgressBar实现
- 【Java Web开发指南】AjaxJson笔记
- POJ1486模拟或者匈牙利变种
- javascript设计模式之观察者模式
- python封装方法有几种_Python打包exe文件方法汇总【4种】
- Mac上最好的Markdown文本编辑器_编辑工具
- 【离散数学】含有两个量词的谓词逻辑公式
- Java实训项目6:GUI学生信息管理系统 - 实现步骤 - 创建项目
- 排列组合算法之一: 01转换法_java改变后的c++版
- Python Cookbook(第3版)pdf
- php tp3.2 去重方法,thinkPHP框架整合tcpdf插件操作示例
- 【例】系统顺序图、操作契约、领域模型图
- c语言常用的100个程序,100个经典C语言程序,大家可以进来看看。
- 梦幻西游五虎将访谈系列:主策划小白
- 130、总结:华为、H3C、锐捷三家交换机配置命令详解
- android 火车购票功能,12306 火车票订票
- antv L7地图 绘制大小不受控制bug
- php编写程序制作图形验证码,php实现图形验证码详解!
- go基础知识学习笔记-篇幅很长写的我想吐
- 2013上半年,Google Chrome正式版最新版本,又增加什么小功能!
热门文章
- 六石管理学:新增一类产品问题,面子类问题
- configure: error: udev support requested but libudev header not installed
- 关于蜂蜜牛奶供养佛菩萨的两段经文
- 可能确实存在脂肪味觉(隐式味觉)
- 解决UBUNTU NVIDIA驱动安装后循环登录问题:关闭UEFI Secure Boot选项
- android 关闭jack_安卓编译 Jack server 错误问题解决办法
- android go 测试,从Gradle在Android中进行JUnit测试:“程序包android.test不存在”
- linux内核登录不上,在嵌入式板上启动linux内核后,用root登录不了
- C# NPOI NPOI加载 Excel加载 Excel读取 Excel写入 Excel修改 保证完整能用
- c++ 深度拷贝和浅度拷贝