• 事件初探


     

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


  • 相关阅读:
    从干将莫邪的故事说起--java比较操作注意要点
    我又不是你的谁--java instanceof操作符用法揭秘
    色即是空,空即是色---java有关null的几件小事
    大头儿子和小头爸爸的战斗--java字符和字符串
    你的环境有问题吧?--byte数组转字符串的疑惑
    两小无猜的爱恨情仇--java =+和+=揭秘
    java程序猿如何练习java版的易筋经?
    孙悟空的七十二变是那般?--java类型的七十二变揭秘
    leetcode 341. Flatten Nested List Iterator
    leetcode 44. Wildcard Matching
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1574663.html
Copyright © 2020-2023  润新知