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


  • 相关阅读:
    要开学了,暂时停更
    day13 IP包头分析 | 路由器原理 1
    day12 数据链路层 | 交换机基本命令
    day11 OSI与TCP-IP 5层协议 | 物理层相关知识
    day10 扫描与爆破
    day 09 简单渗透测试
    day07 PKI
    day07 域
    day06 WEB服务器 | FTP服务器
    day05 DHCP部署与安全 | DNS部署与安全
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1574663.html
Copyright © 2011-2022 走看看