应用场景是这样的:
Class CA
{
public CA()
{
//......
CB cb = new CB();
cb.AddItem(time,Handler); //是否可以将方法传给其它对象????
//......
} public void Handler()
{
}}
//为一个时间-处理函数 的队列。
Class CB
{
//消息队列:
ArrayList list;
//...........
foreach(item in list)
{
if(item.time>now())
{
item.Handle;//执行一个处理函数。如何才能正确执行CA中的Handler处理函数?????
}
}
//...........
}
Class CA
{
public CA()
{
//......
CB cb = new CB();
cb.AddItem(time,Handler); //是否可以将方法传给其它对象????
//......
} public void Handler()
{
}}
//为一个时间-处理函数 的队列。
Class CB
{
//消息队列:
ArrayList list;
//...........
foreach(item in list)
{
if(item.time>now())
{
item.Handle;//执行一个处理函数。如何才能正确执行CA中的Handler处理函数?????
}
}
//...........
}
2. 实现和delegate具有相同参数和返回值的函数实现(可以是静态和非静态的)。
3. 产生一个delegate对象的时候,把你刚刚实现的函数作为参数传给他的构造函数。比如:
Default.aspx.cs中:
public partial class _Default : System.Web.UI.Page
{
//第一步,声明一个delegate对象
public delegate void Mydelegate(string mydelegate);
protected void Page_Load(object sender, EventArgs e)
{
//第三步 产生一个delegate对象的时候,把你刚刚实现的函数(方法)作为参数传给他的构造函数。
Mydelegate hello = new Mydelegate(Hello);
hello("hello");
Mydelegate statichello = new Mydelegate(staticHello);
statichello("China"); }//第二步 实现和delegate具有相同参数和返回值的函数实现(非静态的)
//这里的参数是mydelegate,返回值是void
public void Hello(string mydelegate)
{
Response.Write(mydelegate);
}
//第二步 实现和delegate具有相同参数和返回值的函数实现(静态的)
//这里的参数是mydelegate,返回值是void
public static void staticHello(string mydelegate)
{
HttpContext.Current.Response.Write(mydelegate);
}
}输出结果:helloChina
Class CB
{
//消息队列:
ArrayList list; public void AddItem(DateTime time,handledelegate func)//这样写了之后,你就可以在CA类中
//传入CA实例的Handler()
{
}
}
}