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.      运行结果


  • 相关阅读:
    Linux网络设置
    Linux文件权限
    对象缓冲池
    环形缓冲区ringbuffer
    linux字符集设置
    共享内存(ShareMemory)
    堆算法(make_heap,push_heap,pop_heap, sort_heap)
    (广州)软件开发定制服务,工作流引擎 OA 库存管理系统
    工作流规范WfMC是什么?
    开启MSDTC的方法
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1574663.html
Copyright © 2011-2022 走看看