应用场景是这样的:
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处理函数?????
        }
    }
//...........
}

解决方案 »

  1.   

    用委托,它类似于C++的函数指针,指向一个函数,运行的时候可以调用这个函数。只要与委托的签名(返回类型和参数)匹配的任何方法都可以分配给该委托。1. 声明一个delegate对象。
    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
      

  2.   

    继承一个EventArgs,保存time信息。
      

  3.   

    //为一个时间-处理函数 的队列。public delegate void handledelegate();
    Class CB
    {
    //消息队列:
        ArrayList list; public void AddItem(DateTime time,handledelegate func)//这样写了之后,你就可以在CA类中
    //传入CA实例的Handler()
    {
    }
    }
    }