delegate类型
来源:互联网 发布:腾讯网络加速器内测版 编辑:程序博客网 时间:2024/05/07 18:05
delegate 类型
若要使用一个delegate类型,并要动态地决定欲调用的方法,可以遵照下面的步骤来完成:
步骤一:声明delegate类型的函数样板。
步骤二:定义欲调用的方法。
步骤三:定义delegate类型处理函数,使用delegate。
步骤四:建立delegate类型实体,传入欲调用的方法名称。
步骤五:将程序代码链接起来运作。
在这个范例中,将在HumanResoruce类下建立两个方法aFunction与bFunction。并通过delegate类型,动态地调用这两个方法。
delegate程序代码列表
using System;
namespace UCOM.HR
{
public delegate string FunctionPoiter(string Name);
public class HumanResource
{
public static string aFunction(string Name)
{
return "A Say Hello To " +Name;
}
public static string bFunction(string Name)
{
return "B Say Hello To " +Name;
}
public static void aMethod(FunctionPointer aFunctionPointer)
{
Console.WriteLine(aFunctionPointer("Miles"));
}
public static int Main()
{
FunctionPointer a = new FunctionPointer(aFunction);
FunctionPointer b = new FunctionPointer(bFunction);
aMethod(a);
aMethod(b);
}
}
}
delegate事件
事件(Event)就是一个回呼(callbak)的函数指针(Function Pointer),在C#中通过delegate达成。
事件有两个角色:
事件发行者(Publisher):也称传送者(Sender),其实就是一个对象,这个对象会自行维护本身的状态信息。当本身的状态信息变动时,便触发一个事件,并通知所有的事件订阅者。
事件订阅者(Subscriber):对事件感兴趣的对象,也称为接收者(Receiver),可以注册感兴趣的事件处理常式,在事件发行者触发一个事件后,会自动执行这段程序代码的内容。
事件范例
范例中包含两个类,一为Employee类,一为HumaneRsource类。
程序清单
using System;
namespace UCOM.HR
{
public delegate void ComputeSalaryCallback(string EmpID,double Salary);
public class Employee
{
public event ComputerSalaryCallback OnComputeSalaryDone;
...
public Employee(string EmpID,double BaseSalary)
{
mstrEmpID = EmpID;
mdblBaseSalary = BaseSalary;
}
public virtual double ComputeSalary()
{
OnComputeSalaryDone(mstrEmpID,mdblBaseSalary);
return mdblBaseSalary;
}
...
}
public class HumanResource()
{
public static void SalaryHandler(string EmpID,double Salary)
{
Console.WriteLine("员工:员工代号={0}。薪资={1}",EmpID,Salary);
}
public static int Main()
{
Employee e1 = new Employee("001",5000);
e1.OnComputeSalaryDone +=new ComputeSalaryCallback(SalaryHandler);
e1.ComputeSalary();
return 0 ;
}
}
}
- delegate类型
- delegate C#关键字 (委托类型)
- C#代表类型(delegate)
- Delegate如何进行类型转换?
- 使用delegate类型设计自定义事件
- C#的代表类型(delegate)
- 关于C#的委托类型【delegate 】
- C#委托类型 - (System.Delegate)
- delegate 为什么应该是 weak 类型而不是strong类型
- C#学习日记19----引用类型 之 委托(Delegate) 类型
- delegate
- delegate
- Delegate
- delegate
- Delegate
- Delegate
- Delegate
- Delegate
- 一点一点学ASP.NET之示例——HttpModule 示例
- webMethods之Trading Networks
- C#.NET函数 收集
- Excel - 使用跨sheet定义Drop_List 下拉列表
- 关于游戏这回事
- delegate类型
- 申请带@msn.com后缀的邮箱
- Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- Nuva 示例代码(每日一帖)之 正则表达式(3)
- 一点一点学ASP.NET之基础概念——HttpHandler
- 禅的公案
- 一点一点学ASP.NET之基础概念——HttpModule
- javascript实现联动菜单
- Spring MVC 入门