delegate void MyDel(string bankName,int balance,int amount); //声明一个委托
class BankCard
{
public string bankName { set; get; } //银行卡名称
public int balance { set; get; } //银行卡余额
public event MyDel MyEvent; //定义一个委托
public void PayByCard(int amount) //刷卡的方法
{
this.balance -= amount; //刷卡后余额减少
if (MyEvent!=null) //确认事件被订阅
{
MyEvent(bankName,balance,amount);
}
}
}
class Phone
{
public void Display(string bankName, int balance, int amount) //回调方法(事件处理方法)
{
Console.WriteLine("您的{0}银行卡消费{1}元,当前余额{2}",bankName,balance,amount);
}
}
class Email
{
public void GetMail(string bankName, int balance, int amount) //回调方法(事件处理方法)
{
Console.WriteLine("邮箱:您的{0}银行卡消费{1}元,当前余额{2}", bankName, balance, amount);
}
}
class Program
{
static void Main(string[] args)
{
BankCard ICBC = new BankCard { bankName = "工商银行", balance = 10000 };
Phone Iphone = new Phone();
Phone Iphone6Plus = new Phone();
Email email = new Email();
ICBC.MyEvent += Iphone.Display;
ICBC.MyEvent += Iphone6Plus.Display;
ICBC.MyEvent += email.GetMail;
ICBC.PayByCard(8000);
Console.ReadKey();
}
}