首页 > 其他分享 >对象自定义事件

对象自定义事件

时间:2023-02-27 19:13:48浏览次数:38  
标签:customer Console 自定义 qian 对象 void 事件 using public

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Event
{
    class Program
    {
        static void Main(string[] args)
        {
            Customer customer = new Customer();
            FuWuYuan fuWuYuan = new FuWuYuan();
            customer.Order += fuWuYuan.Action;
            customer.Action();
            customer.FuQian();
        }
    }
    // 养成习惯事件参数继承自EventArgs
    public class OrderEventArgs : EventArgs
    {
        /// <summary>
        /// 菜名
        /// </summary>
        public string DishName { get; set; }
        /// <summary>
        /// 分量
        /// </summary>
        public string Size { get; set; }
    }
    // 声明事件参数为事件拥有者Customer和事件参数OrderEventArgs
    // 代码规范 EventHandler后缀标识用来声明事件的
    public delegate void OrderEventHandler(Customer customer,OrderEventArgs e);
    public class Customer
    {
        // 声明事件字段
        private OrderEventHandler orderEventHandler;
        // 添加事件
        public event OrderEventHandler Order {
            add
            {
                this.orderEventHandler += value;
            }
            remove
            {
                this.orderEventHandler -= value;
            }
        }
        public double Bill { get; set; }
        public void FuQian() 
        {
            Console.WriteLine("我付了${0}元钱", this.Bill);
        }
        public void JinMen()
        {
            Console.WriteLine("我进入饭店!");
        }
        public void ZuoXia()
        {
            Console.WriteLine("找位置坐下");
        }
        public void DianCai()
        {
            Console.WriteLine("拿起菜单......");
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("思考中......");
            }
            if (this.orderEventHandler != null) 
            {
                OrderEventArgs e = new OrderEventArgs();
                e.DishName = "番茄炒鸡蛋";
                e.Size = "Max";
                this.orderEventHandler.Invoke(this,e);
            }
        }
        public void Action()
        {
            Console.ReadLine();
            this.JinMen();
            this.ZuoXia();
            this.DianCai();
        }
    }
    public class FuWuYuan
    {
        public void Action(Customer customer, OrderEventArgs e)
        {
            Console.WriteLine("记录了一个菜{0}", e.DishName);
            double qian = 10;
            switch (e.Size)
            {
                case "Max":
                    qian = qian * 1.5;
                    break;
                case "Mini":
                    qian = qian * 0.5;
                    break;
                default:
                    break;
            }
            customer.Bill += qian;
        }
    }
}

 

标签:customer,Console,自定义,qian,对象,void,事件,using,public
From: https://www.cnblogs.com/instal/p/17161500.html

相关文章

  • 事件处理
    监听事件#我们可以使用 v-on 指令(简写为 @)来监听DOM事件,并在事件触发时执行对应的JavaScript。用法:v-on:click="methodName" 或 @click="handler"。事件处理......
  • 面向对象
    面向对象packagecom.andy.base.oop.demo01;publicclassDemo01{//main方法publicstaticvoidmain(String[]args){}/*修饰符返回类......
  • uniapp引入第三方插件,打包自定义基座报错,目录下不存在
     在manifest.json中选好了插件,但打包时还是报错,可以看一下下方图片保证三个名字保持一致,再次尝试打包  ......
  • JS 判断数组对象中某个字段有无重复
    判断一个数组中对象中,某个字段是否有重复1.使用setmap实现letarr=[{name:'zhang',id:'1001'},{nmae:'li',id:'1001'}]//判断id是否重复//返回一个id......
  • 自定义物理分页
    自定义分页查询importjava.io.Serializable;publicclassPageReqimplementsSerializable{/***当前页*/privateIntegercurrent;/*......
  • 如何避免鼠标移入子级触发父级的移出事件(两种方法)
    我们经常会遇到一个问题,我们使用onmouseover和onmouseout控制鼠标的的移入移出时,如果是将鼠标从父级移动到子级的时候,会触发子级的冒泡事件,导致父级先触发移出事件后立即触......
  • 深入理解JSON对象
    看了js高级程序设计这本书关于json的讲解,下面我把里面我认为比较重要的知识提炼出来,一方面给帮助自己理解,同时也分享给有需要的朋友json:是一种数据格式,不是一种编程语言jso......
  • TypeScript Map 对象
    TypeScriptMap对象Map对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。Map是ES6中引入的一种新的数据结构,可以......
  • TypeScript 对象
    TypeScript对象对象是包含一组键值对的实例。值可以是标量、函数、数组、对象等,如下实例:varobject_name={key1:"value1",//标量key2:"value",key3:functi......
  • 滴水 2.27 --事件
    第二个参数false会把已通知改为未通知true需要自己动手改为已通知第二个参数false会把已通知改为未通知点击查看代码 4、线程控制实验:只读形式的线程控制 ......