黑马程序员技术交流社区

标题: 委托和事件的内存分配问题??? [打印本页]

作者: 侯慧杰    时间: 2012-7-9 14:39
标题: 委托和事件的内存分配问题???
参考代码:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleAppFirst.Demo
{
    class Alarm_Publisher
    {
        public delegate void Dele_Alarm(Args_Class e);//委托的定义
        public event Dele_Alarm Alarm;//事件的声明
        //发布事件
        public void AlarmAt(Args_Class e)
        {
            if (Alarm != null)//当事件发生时
                Alarm(e);//调用事件处理程序
        }
    }
    class Args_Class//当事件发生时携带的数据
    {
       public int second;
       public int minute;
       public int hour;
    }
    class Order
    {
        //处理程序
        public static void GetUp(Args_Class e)
        {
            Console.WriteLine(e.hour+e.minute+"点了,起床了");
        }
    }
    class EventDemo
    {
        static void Main()
        {
            Alarm_Publisher al = new Alarm_Publisher();
            al.Alarm += new Alarm_Publisher.Dele_Alarm(Order.GetUp);//代表事件发生了
            Args_Class ar = new Args_Class();
            ar.hour = 7;
            al.AlarmAt(ar);//处理事件
        }

        //static void al_Alarm()
        //{
        //    throw new Exception("The method or operation is not implemented.");
        //}
    }
}
委托和是和事件是的内存分配是怎样的????



作者: 许庭洲    时间: 2012-7-9 14:59
1,委托 可以看成一种表示函数的数据类型.类似函数指针;
2,委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用;
3,事件是特殊的委托 ;
4,事件是一种消息机制,它是一种委托,委托不带方法体。
5,委托和事件在内存分配是相同的,都在内存开辟一段空间进行数据的存储与处理;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2