zoukankan      html  css  js  c++  java
  • C#_delegate和事件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    //如果账户金额小于0 触发事件
    
    namespace Starter
    {
        public delegate int DeleageteClass(out DateTime start, out DateTime stop);
    
        class Program
        {
            static void Main(string[] args)
            {
                Bank account = new Bank();
    
                account.NSF += NSFHandler;  //绑定账户小于0时候的事件
    
                account.Deposit(500);
                account.WithDrawal(750);
    
                Console.ReadLine();
            }
    
            public static void NSFHandler(object o, BankEventArgs e)   //如果小于0时候的会发生的事件
            {
                Console.WriteLine("NSF Transaction");
                Console.WriteLine("Balance: "+e.Balance);
                Console.WriteLine("Transaction: "+ e.Transaction);
            }
        }
    
        public delegate void OverDrawn(object o,BankEventArgs e);
    
        public class Bank {
    
            public event OverDrawn NSF;  //定义委托事件的属性
    
            public decimal Deposit(decimal amountDeposit)
            {
                propBalance += amountDeposit;
                return propBalance;
            }
    
            public decimal WithDrawal(decimal amountWithdrawn)
            {
                decimal newBalance = propBalance - amountWithdrawn;
                if (newBalance < 0)
                {
                    if (NSF != null)         
                    {
    
                        //BankEventArgs 用于记录当前类相关信息,供事件调用
                        BankEventArgs args = new BankEventArgs(Balance,amountWithdrawn);
                        //事件调用 - 方法NSFHandler
                        NSF(this, args);
                    }
                }
                return propBalance = newBalance;
                
            }
    
            private decimal propBalance=0;
    
            public decimal Balance
            {
                get
                {
                    return propBalance;
                }
            }
        }
    
    
        public class BankEventArgs : EventArgs
        {
            public BankEventArgs(decimal amountBalance,decimal amountTransaction)
            {
                propTransaction = amountTransaction;
                propBalance = amountBalance;
            }
    
            private decimal propBalance;
    
            public decimal Balance
            {
                get {
                    return propBalance;
                }
            }
    
            private decimal propTransaction;
    
            public decimal Transaction
            {
                get
                {
                    return propTransaction;
                }
            }
        }
    }
    


  • 相关阅读:
    windows2012 永激活及配置
    Fiddler2 英文版翻译
    你知道using的用法吗?
    你会利用css写下拉列表框吗?
    完美解决.net2.0和.net4.0在同一个iis中共同运行
    深入剖析new override和virtual关键字
    思科防火墙,h3c三层交换机配置笔记
    c# 笔记 数据类型转换 数组 函数
    Silverlight 完美征程 笔记1 (控件模型)
    C#笔记(流程控制)
  • 原文地址:https://www.cnblogs.com/MarchThree/p/3720448.html
Copyright © 2011-2022 走看看