c# 事件

    技术2022-05-19  20

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

     

    namespace 委托与事件处理_c_____

    {

        //时间只能在声明这个时间的类中引发。

        //引发时必须适当地进行初始化的参数有两个:Sender(引发事件的对象) e(包含时间参数的对象)

        class Account

        {

            protected decimal _balance;

     

            public delegate void OverdraftEventHandler(object sender, OverdraftEventArgs e);//声明委托

            public event OverdraftEventHandler OnOverdarftHanler;//将委托定义为事件(event关键字),声明一个对象OnOverdarftHanler

            public Account(decimal init)

            {

                _balance = init;

            }

            public decimal Banlance

            {

                get

                {

                    return _balance;

                }

            }

            //public void Deposit(decimal aDeposit)

            //{

            //    _balance += aDeposit;

            //}

            public bool Withdrawal(decimal aDebit)

            {

                OverdraftEventArgs args = new OverdraftEventArgs(_balance, aDebit);

                OnOverdraft(args);

                return false;

            }

     

            public void AddOnOverdraft(OverdraftEventHandler handler)

            {

                OnOverdarftHanler += handler;

            }

     

            protected void OnOverdraft(OverdraftEventArgs e)

            {

                if (OnOverdarftHanler != null)

                    OnOverdarftHanler(this,e);//类内部调用事件

            }

        }

     

        public class OverdraftEventArgs : EventArgs//事件参数,继承,描述了透支本质

        {

            protected decimal _balance;

            protected decimal _withdrawal;

     

            public OverdraftEventArgs(decimal balance, decimal withdrawal)

            {

                _balance = balance;

                _withdrawal = withdrawal;

            }

     

     

     

        }

    }

            //订阅事件

            //Account account = new Account(100);

            //Account.OverdraftEventHandler handler = new Account.OverdraftEventHandler(OnOverdraft);//创建事件实例,

                                                                                                     //将符合要求的函数写入

            //account.AddOnOverdraft(handler);

     

            //static void OnOverdraft(object sender, OverdraftEventArgs e)//严格定义指定的参数

            //{

            //    DO_SOMETHING

            //}


    最新回复(0)