zoukankan      html  css  js  c++  java
  • 事件初探

     

    1.           引言

    .net事件对于初学者不是很好理解,以下示例帮助初学着理解事件。

    2.      事件

    定义事件成员的类型允许类型(或类型示例)在某些事情发生时通知其他对象。事件模型建立在委托之上。

    3.      案例

    假设我们设计的类型myStudent(具有IDName属性),当它的任意一个属性发生改变时,提供对外通知的功能。

    4.      代码实现

    a)         myStudent

    class myStudent

    {

        private string id;

        public string ID

        {

            get

            {

                return id ;

            }

           

            set

            {

                id=value;

                /// 对外通知

                OnPropertyChanged();

            }

        }

       

        private string name;

        public string Name

        {

            get

            {

                return name;

            }

           

            set

            {

                name=value;

            /// 对外事件

     

                OnPropertyChanged();

            }

        }

       

        /// <summary>

        /// 定义一个事件成员,以便所有接受事件通知着订阅

        /// </summary>

        /// <returns></returns>

        public event EventHandler PropertyChanged;

       

        /// <summary>

        /// 使用virtual 是为了便于派生类改变基类的通知行为

        /// </summary>

        public virtual void OnPropertyChanged()

        {

            if(PropertyChanged!=null)

            {

                PropertyChanged(this,new EventArgs ());

            }

        }

       

        public override string ToString()

        {

         return    string.Format ("ID:{0} Name:{1}",ID,Name);

        }

       

    }

    b)         外部订阅事件片段

    public static void RunSnippet()

        {

            myStudent StudentObj=new myStudent();

             /// 外部订阅

            StudentObj.PropertyChanged+=new EventHandler(OnPropertyChanged);

           

            StudentObj.ID ="001";

            StudentObj.Name ="B0b0";

        }

     //订阅处理

    public static void OnPropertyChanged(object sender,EventArgs e)

        {

            myStudent obj=(myStudent)sender;

            Console.WriteLine ("Property Changed:{0}",sender.ToString());

        }

    5.      运行结果


  • 相关阅读:
    设计算法,求AB两个整数集合的交集
    C++函数传递指针面试题
    C++构造函数、析构函数与抛出异常
    c++ 虚函数表解析
    c++ 对象的内存布局
    09 构造函数能调用虚函数吗?
    C++构造函数初始化顺序
    计数排序,基数排序和桶排序
    80 求论坛在线人数
    79 两个整数集合A和B,求其交集
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1574663.html
Copyright © 2011-2022 走看看