zoukankan      html  css  js  c++  java
  • C#中的事件

    之前看过刘铁猛老师视频关于C#中事件的讲解,感觉受益匪浅,将视频中的演示的示例放在这里,便于以后的学习。

    事件5要素:

    1、发布者

    2、订阅者

    3、事件的声明

    4、事件的注册/事件的订阅

    5、事件的触发

    namespace EventExercise
    {
        class Program
        {
            static void Main(string[] args)
            {
                Customer customer = new Customer();
                Waiter waiter = new Waiter();
                customer.Order += waiter.Action;//5、事件的注册
                customer.OrderDish();
                customer.PayTheBill();
            }
        }
    
        //1、发布者
        public class Customer
        {
            public event EventHandler Order;//3、事件声明
            public double bill;
            public void PayTheBill()
            {
                Console.WriteLine("I will pay the ${0}.", this.bill);
            }
    
            public void OrderDish()
            {
                Console.WriteLine("I walk into a restaurant,and sit down.");
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine("let me think...");
                    Thread.Sleep(1000);
                }
                OrderEventArgs orderInfo = new OrderEventArgs()
                {
                    DishName = "yuxiang rousi",
                    Size = "big"
                };
                this.Order(this, orderInfo);//4、事件的触发
            }
        }
    
        public class OrderEventArgs :EventArgs
        {
            public string DishName { get; set; }
            public string Size { get; set; }
        }
    
        //2、订阅者
        public class Waiter
        {
            
            public void Action(object sender, EventArgs e)
            {
                Customer customer = sender as Customer;
                OrderEventArgs orderInfo = e as OrderEventArgs;
                double price = 10;
                switch (orderInfo.Size)
                {
                    case "small":
                        price -= 5;
                        break;
                    case "big":
                        price += 5;
                        break;
                    default:
                        break;
                }
                Console.WriteLine("I will serve you dish<{0}>.", orderInfo.DishName);
                customer.bill += price;
            }
        }
    }
    //事件的触发
  • 相关阅读:
    QT之QRect函数QRect::adjust()函数
    QT 正则表达式(进阶篇)IP,端口号,文件名,非空格字符的匹配,已验证
    QT 正则表达式(基础篇)
    处理不平衡数据的策略
    记录一下ssh,nfs安装步骤
    用户偏好的回归预测推荐
    SVD++分解
    BiasLFM分解
    WALS分解
    ALS分解
  • 原文地址:https://www.cnblogs.com/hanzq/p/14676934.html
Copyright © 2011-2022 走看看