事件

//声明事件
//实现方法
//订阅方法
//触发事件 


//第一种形态
public event EventHandler<Products> aa;
//第二种形态
public event EventHandler<Products> aa { add { aa += value; } remove { aa -= value; } }

-------------------------------------------------------------------------主程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            //************************
            //客户购买产品
            //及时通知卖家
            //************************
            Consumer c = new Consumer("夏侯��");//实例化客户姓名
            Seller s = new Seller();//实例化卖家
            c.EHS += s.SellerInform;//订阅方法
            c.Buy("苹果5s");//购买产品,调用Seller.SellerInform方法。通知卖家
        }
    }
}

-------------------------------------------------------------------------Seller.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
    public class Products: EventArgs//产品
    {
        public string Phone { get; private set; }//产品名称
        public Products(string s)
        {
            this.Phone = s;
        }
    }
    public class Seller//卖家
    {
        public void SellerInform(object o,Products p)//用户购买通知(实现方法)
        {
            Console.WriteLine(((Consumer)o).Name + "购买了" + p.Phone);
            Console.ReadKey();
        }
    }
}

-------------------------------------------------------------------------Consumer.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
    public class Consumer//买家
    {
        //                 Products必须继承EventArgs
        public event EventHandler<Products> EHS;//声明事件
        //客户姓名
        public string Name { get; set; }
        public Consumer(string s)
        {
            this.Name = s;
        }
        //客户购买产品的方法
        public void Buy(string name)
        {
            Products p = new Products(name);
            if (EHS != null)//判断EHS事件有没有被订阅
            {
                EHS(this, p);//触发事件
            }
        }
    }
}

 

你可能感兴趣的:(事件,C#,事件)