C#_delegate和事件 - 如果金额小于0则触发事件
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;
}
}
}
}
C#_delegate和事件 - 如果金额小于0则触发事件的更多相关文章
- 实现 select中指定option选中触发事件
我们在用到下拉列表框select时,需要对选中的<option>选项触发事件,其实<option>本身没有触发事件方法,我们只有在select里的onchange方法里触发. ...
- 事件绑定的快捷方式 利on进行事件绑定的几种情况
[事件绑定快捷方式]$("button:first").click(function(){ alert(1); }); [使用on绑定事件] ① 使用on进行单事件绑定 $(&qu ...
- 在子组件中触发事件,传值给父组件-vue
1.通过$emit触发事件 在子组件<x-test>中触发事件: <button @click="toSearchProduct()">搜索</but ...
- ecshop 秒杀并发时库存会被减到小于0的解决办法
ecshop 秒杀并发时库存会被减到小于0更新库存后,再进行库存检查,如果库存为负数,则执行事务的回滚. begin();//开始一个事物处理开始 $sql = "UPDATE " ...
- MSCRM4.0如何使js事件在批量编辑表单中触发
MSCRM4.0如何使js事件在批量编辑表单中触发 MSCRM4.0如何使js事件在批量编辑表单中触发 MSCRM3.0我们可以通过在onload事件加入以下代码来控制某个属性为只读.crmForm. ...
- 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了
系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses ...
- JavaScript语言里判断一个整数,属于哪个范围:大于0;小于0;等于0
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- appium 切换native/ webview,findby,还有页面元素定位一直小于0的问题的解决
之前一直有个bug没有解决. 今天,终于解决了. 疑问过程: app是混合应用,项目做了H5优化之后,以前的用例执行总会失败,体现在原来的一个元素点击无反馈 排查原因:1.项目做了H5优化,2.测试的 ...
- 51Nod - 1107 斜率小于0的连线数量
二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...
随机推荐
- Java中的volatile
关于volatile 在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的.而随着JVM的成熟和优化,现在在多线程环境下 volatile关键字的使用变得非常重要. ...
- apache开源项目--Mavibot
Mavibot™ 是个Java 的多版本并发控制 BTree,是 JDBM(当前 Apache Directory 服务器的后端)的替代品, 但是有着更强的功能,能适应任意需要实现 Java MVCC ...
- js显示日期时间(集锦)
1.最简单的时钟显示 <div id="time"></div> <script> setInterval(); </script>
- 编写高效的C程序与C代码优化 via jobbole
http://blog.jobbole.com/82582/ 原文出处: codeproject 译文出处:CodingWu的博客 欢迎分享原创到伯乐头条
- SQL Server 触发器:表的特定字段更新时,触发Update触发器
create trigger TR_MasterTable_Updateon MasterTableafter updateas if update ([Type])--当Type字段被更新时,才会触 ...
- P2158 [SDOI2008]仪仗队 线性筛(欧拉函数和素数表)
上三角行恰好是[1,n-1]的欧拉函数 http://www.luogu.org/problem/show?pid=2158#sub //#pragma comment(linker, "/ ...
- Code First 更新数据库结构(简单实现方法:会删除原来的数据)
之前在 http://www.cnblogs.com/mmcmmc/p/3833265.html 写到关于“Code First 更新数据库结构”的东西. 可是由于某种原因,新手们会出现各种问题,好了 ...
- ACM2034
/*人见人爱A-BProblem Description参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差, ...
- Hbase的安装配置
一.上传解压后的Hbase文件. 二.配置: 1..bash_profile文件: export HBASE_HOME=/home/kituser/bigdata/hbase-0.94.6-cdh4. ...
- Linux更改默认jdk
RHEL默认安装Open JDK--java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64,现在要换成Oracle JDK1.7.0_51 1. (可选)删 ...