using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Lab7_4
{
class Stock
{
public delegate void PriceRise(double money); //定义委托
public delegate void PriceDown(double money); public event PriceRise PriceRiseEvent; //定义事件
public event PriceDown PriceDownEvent; private string stockName;
private double stockPrice; public string StockName {
set;
get;
} public double StockPrice {
set;
get;
} public Stock(string name, double price) {
stockName = name; stockPrice = price;
} public void priceRise(double up) {
Console.WriteLine("股票上升: {0}", up);
PriceRiseEvent(up); //触发事件 } public void priceDown(double down) {
Console.WriteLine("股票下降: {0}", down);
PriceDownEvent(down);
} }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Lab7_4
{
class Buyer
{
private Stock stock; //卖家要抛售的股票 public Buyer(Stock s) {
stock = s;
} public void StockPriceRise(double up) { if (up > 0.05) {
Console.WriteLine("股票上涨已经超过5%, 买家谨慎买入");
} else {
Console.WriteLine("股票正在小幅上涨, 买家可以买入");
}
} public void StockPriceDown(double down) {
if (down > 0.05) {
Console.WriteLine("股票下跌已经超过0.05,买家可以逢低买入");
} else {
Console.WriteLine("股票正在小幅下跌,买家暂时请观望");
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Lab7_4
{
class Seller
{
private Stock stock; //卖家要抛售的股票 public Seller(Stock s) {
stock = s;
} public void StockPriceRise(double up) { if (up > 0.05) {
Console.WriteLine("股票上涨已经超过5%, 卖家请赶快抛售");
} else {
Console.WriteLine("股票正在小幅上涨, 卖家可以继续观望");
}
} public void StockPriceDown(double down) {
if (down > 0.05) {
Console.WriteLine("股票下跌已经超过0.05,卖家请逢低补仓");
} else {
Console.WriteLine("股票正在小幅下跌,卖家请谨慎操作");
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Lab7_4
{
class Program
{
static void Main(string[] args) { Console.WriteLine("输入股票名: ");
Stock stock = new Stock(Console.ReadLine(), ); Buyer buyer = new Buyer(stock);
Seller seller = new Seller(stock); //注册事件
stock.PriceRiseEvent += buyer.StockPriceRise;
stock.PriceDownEvent += buyer.StockPriceDown; stock.PriceRiseEvent += seller.StockPriceRise;
stock.PriceDownEvent += seller.StockPriceDown; //触发事件
Console.WriteLine("输入涨率: ");
stock.priceRise(double.Parse(Console.ReadLine()));
Console.WriteLine("输入降率: ");
stock.priceDown(double.Parse(Console.ReadLine())); }
}
}

C#_事件学习的更多相关文章

  1. Mysql事件学习

    出自:http://blog.chinaunix.net/uid-20639775-id-3323098.html Mysql事件学习 在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQ ...

  2. C#_事件

    C#_事件 概述 今天用来演示事件的例子是模拟实现一个文件下载类,在这个类中我将定义一个DownLoad事件,这个事件用来在文件下载的过程中,向订阅这个事件的用户发出消息,而这个消息将用DownLoa ...

  3. centos5.5字体为方块问题的解决_深入学习编程_百度空间

    centos5.5字体为方块问题的解决_深入学习编程_百度空间 centos5.5字体为方块问题的解决 一.yum -y install fonts-chinese二.yum -y install f ...

  4. C#委托与事件学习笔记

    委托事件学习笔记 本文是学习委托和事件的笔记,水平有限,如有错漏之处,还望大神不吝赐教. 什么是委托?从字面意思来解释,就是把一个动作交给别人去执行.在实际开发中最常用的就是使一个方法可以当做一个参数 ...

  5. C# event 事件学习

    C# event 事件学习 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-26 章节: 简单事件编写 模拟 WPF 控件传递 ...

  6. 安卓开发_深入学习ViewPager控件

    一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...

  7. 《JS高程》事件学习笔记

    事件:文档或浏览器窗口中发生的一些特定的交互瞬间,也即用户或浏览器自身执行的某种动作. -------------------------------------------------------- ...

  8. JS 点击事件学习总结

    废话篇: 在我们编写无论什么网页内容的时候我们总是或多或少的要接触到点击事件这一范畴的,写过几个简短的demo和网页之后,感觉自己对电机事件一类的东西了解也更为的清楚了,之前写过很多零零散散的东西现在 ...

  9. android touchEvent事件学习

    学习网址:http://www.apkbus.com/forum.php?mod=viewthread&tid=44296 1:Android Touch事件传递机制解析 android系统中 ...

随机推荐

  1. Hibernate利用纯sql

    String hql = "select * from shop where shop.strid in(select strid from moneythreeshop where mon ...

  2. IDE调研之二

    Eclipse和Jetbrains的IntelliJ IDEA对比: Eclipse工具 在Eclipse中,可以最大化控制台.通过双击标签或者Ctrl+M快捷键就可以实现,但是在IntelliJ I ...

  3. 10_Java面向对象_第10天(继承、抽象类)_讲义

    今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在Jav ...

  4. 安装virtualbox

    1.安装virtualbox https://www.virtualbox.org/ 2.安装centos6.6 3.配置网络 右键-->网络-->网卡2-->host-only c ...

  5. poj 3311(状态压缩DP)

    poj  3311(状态压缩DP) 题意:一个人送披萨从原点出发,每次不超过10个地方,每个地方可以重复走,给出这些地方之间的时间,求送完披萨回到原点的最小时间. 解析:类似TSP问题,但是每个点可以 ...

  6. C# QR二维码DEMO

    QR二维码 二维码的一种 相关类库 ThoughtWorks.QRCode 第三方类库 DEMO功能 Encode 生成二维码图片 Encoding 编码 Correction Level 等级 Ve ...

  7. .net MVC4 来一个简单的分页代码

    action VodeEntities db = new NewVode.Models.VodeEntities(); ; ) { var sql = "select * ,row_numb ...

  8. BZOJ 3498 PA2009 Cakes

    本题BZOJ权限题,但在bzojch上可以看题面. 题意: N个点m条无向边,每个点有一个点权a. 对于任意一个三元环(i,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求 ...

  9. hihocoder1639 图书馆 [数学]

    已知数组a[]及其和sum, 求sum! / (a1!a2!...an!) 的个位数的值. 求某数的逆元表写成了求某数阶乘的逆元表,故一直没找到错误. P 是质数的幂B 表示质数,P 表示模数,cal ...

  10. Linux中cd test和cd /test以及类似命令的区别

    一.加“/”的区别 今天重拾Linux的学习!按照书上,在tmp下,创建文件夹,命令如下: mkdir -p /test1/test2 结果使用下面两行命令结果不同,就对是否加“/”有了疑问,就去百度 ...