初探.NET中的delegate类型与.NET事件
来源:互联网 发布:淘宝初级课程ppt 编辑:程序博客网 时间:2024/06/05 05:30
1.了解delegate
delegate可以认为是一种函数的指针,一个delegate类型的实例代表可以代表一个方法,在实际使用中我们可以在不知道方法名称的情况下调用到这个方法。前面说太多可能会使大家变得糊涂,或者摸不着头脑,我举个例子,来详细说明此种类型的用法:
整个例程的代码,是控制台项目.
//代码开始
using System;
namespace ConsoleApp1
{
public delegate string FunctionPointer(string strName);
class Class1
{
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
System.Console.WriteLine("Hello World!");
FunctionPointer fpa = new FunctionPointer(aFunction);
FunctionPointer fpb = new FunctionPointer(bFunction);
InvokeMethod(fpa);
InvokeMethod(fpb);
System.Console.ReadLine();
//
}
public static string aFunction(string sNameA)
{
return "aFunction say i'm " + sNameA;
}
中国网管联盟www、bitsCN、com
public static string bFunction(string sNameB)
{
return "bFunction say i'm " + sNameB;
}
public static void InvokeMethod(FunctionPointer fp)
{
System.Console.WriteLine(fp("storm"));
}
}
}
//代码结束
步骤1:要使用delegate类型首先应该建立delegate样板,所谓delegate样板其实就是delegate能够调用的方法的签名,什么是方法的签名?方法的签名可以认为是方法的参数类型、数量、返回值类型这些特征。
定义的形势如下: 访问修饰符(public) delegate 返回值类型 名称(参数列表);
说明:返回值类型应该是你定义的delegate类型所准备调用的方法的返回值类型,参数列表应该与你准备使用delegate来调用的方法的参数列表相同(指的是数量、类型、顺序相同,名称当然无所谓了)
一个实际的例子就是上面程序的
public delegate string FunctionPointer(string strName);
步骤2:定义delegate准备调用的方法,当然该方法要与你刚才声明的delegate有相同的返回值和参数表;
例如上面程序的:
public static string aFunction(string sNameA) 网管联盟www.bitsCN.com
{
return "aFunction say I'm " + sNameA;
}
public static string bFunction(string sNameB)
{
return "bFunction say I'm " + sNameB;
}
步骤3:定义delegate类型的处理函数,在这里可以定义如何调用你的delegate类型所指的方法,在实际使用中可以在这里来动态决定传入的参数等信息。
如上面程序的
public static void InvokeMethod(FunctionPointer fp)
{
System.Console.WriteLine(fp("storm97"));
}
步骤4:建立delegate实例,传入欲调用的方法名,要使用delegate类型必须建立他的实例,一个实例代表了一个方法的引用(可以这样说)
delegate实例定义的形式:
XXX(代表你定义的某个delegate类型的名称) 实例名(假设是实例A) = new XXX([欲调用的方法名(假设是方法A)]);
意思是实例变量A指向方法A的程序代码段;
如:
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
System.Console.WriteLine("Hello World!");
//建立第一个delegate的实例fpa,该实例代表方法aFunction; 中国网管论坛bbs.bitsCN.com
FunctionPointer fpa = new FunctionPointer(aFunction);
//建立第一个delegate的实例fpa,该实例代表方法bFunction;
FunctionPointer fpb = new FunctionPointer(bFunction);
......
//
}
下面就可以运行整个程序了。
如:
static void Main(string[] args)
{
//
......
//调用方法aFunction
InvokeMethod(fpa);
//调用方法bFunction
InvokeMethod(fpb);
//
}
输出结果: aFunction say I'm storm97
bFunction say I'm storm97 【转自www.bitsCN.com】
- 初探.NET中的delegate类型与.NET事件
- 初探.NET中的delegate类型与.NET事件
- .NET中使用Delegate类型设计自定义事件
- 从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- 从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- .Net中的事件与委托
- Net中的事件与委托
- net中的事件与委托
- .Net中的事件与委托
- .NET 中的事件与委托
- .net中的delegate和event
- Asp.net中的委托(delegate)
- .net中的委托(Delegate)
- .Net: delegate(委托)、event(事件) 应用
- 关于.net中的委托与事件
- .Net Framework中的委托与事件
- .Net Framework中的委托与事件
- vb.net中的委托与事件
- 从软件测试的角度怎么去测试“论坛系统”?
- 转:Modelsim 6.2b中编译xilinx 10.1的仿真库
- Directshow 开发指南(附源码)
- vbs搜索代理
- Web Service简单例子
- 初探.NET中的delegate类型与.NET事件
- Avast!杀毒软件本地权限提升和拒绝服务漏洞
- Directshow 实务精选(附源码)
- SMARTARM2200 ADS工程在IAR EWARM 5.3上的移植(9)-uCFS的移植(SD卡驱动简析)
- 哈佛成功金句25则
- 在DNS中为一个域名配置多个IP地址实现负载和分流---基于WINDOWS服务器
- SQL 触发器
- AIR文件操作(二):使用文件对象操作文件和目录
- [转]正则表达式语法表