一.功能说明
定义一个委托类,使得用户使用的储蓄卡可以在信用卡还款日当天自动给信用卡还款。
二.设计流程
设计一个储蓄卡类,类中使用两个函数可以显示储蓄卡取款数目和余额。设计一个信用卡类,定义三 个函数分别查看信用卡的账单金额、还款日期和信用卡余额。设计一个委托类,其中写有方法函数, 使得用户默认的储蓄卡可以在还款日自动对信用卡进行还款。
在主函数中定义相应的实例变量,并为储蓄卡余额、信用卡借款金额和还款日期赋值,之后调用委托 类对信用卡进行自动还款,并输出相应的数据。
三.关键源码展示
namespace ConsoleApplication3delegate
{
class DepositCard //储蓄卡
{
public int amount;
public void Display()
{
Console.WriteLine("储蓄卡余额为:{0}", amount);
}
public void Account(int balance, int payday)
{
amount += balance;
Console.WriteLine("今天是本月的{0},取款{1},储蓄卡余额为:{2}。", DateTime.Today.Day, balance, amount);
}
}
class CreditCard //信用卡
{
private int billamount;
private int repaymentday;
public CreditCard(int billamount, int repaymentday)
{
this.billamount = billamount;
this.repaymentday = repaymentday;
}
public int getbillamount() { return billamount; }
public int getrepaymentday() { return repaymentday; }
public void Display() { Console.WriteLine("信用卡余额为:{0}", billamount); }
}
class CreditCardDelegate
{
public int billamount; //信用卡余额
public int repaymentday;
public delegate void DelegateRepay(int billamount,int repaymentday);
public event DelegateRepay Pay;
public void Notify()
{
Console.Write("今天是{0}日,", DateTime.Today.Day);
if(DateTime.Today.Day==repaymentday)
{
Pay(billamount, repaymentday);
Console.WriteLine("还款成功!");
}
else
{
Console.WriteLine("未到还款日,无需还款!");
}
}
}
class Program
{
static void Main(string[] args)
{
DepositCard depositCard = new DepositCard();
depositCard.amount = 10000;
CreditCard creditCard1 = new CreditCard(-2000, 6);
CreditCard creditCard2 = new CreditCard(-3000, 13);
CreditCard creditCard3 = new CreditCard(-5000, 29);
depositCard.Display(); Console.WriteLine(""); //输出储蓄卡余额
List<CreditCard> Cards = new List<CreditCard>();
Cards.Add(creditCard1); Cards.Add(creditCard2); Cards.Add(creditCard3);
int i = 1;
foreach (CreditCard card in Cards)
{
Console.WriteLine("信用卡开始执行委托还款。。。。。。");
Console.WriteLine("信用卡creditCard{0}", i++);
CreditCardDelegate A = new CreditCardDelegate();
A.billamount = card.getbillamount();
A.repaymentday = card.getrepaymentday();
A.Pay += new CreditCardDelegate.DelegateRepay(depositCard.Account);
A.Notify();
depositCard.Display();
Console.WriteLine("");
depositCard.amount = 10000;
}
Console.ReadLine();
}
}
}

四.总结
通过本次实验,我能够将委托与事件的知识运用于实际,并且对委托与事件的一些易错点有了更深刻 的记忆。
五.源码开发地址
有借鉴