问题分析
此问题要使用c#中的委托功能来实现
代码块
主程序:
{
Delegate obj1 = new Delegate();
Delegate obj2 = new Delegate();
User u1 = new User("zhan", 4000, 300, 10);
User u2 = new User("huang", 10000, 2000, 20);
Operation operate = new Operation();
obj1.Remind_event += operate.Remind_func;
obj2.Deduct_event += operate.Deduct_func;
for (int day = 0; day <= 30; day++)
{
if (u1.Date - day == 3)
obj1.MyRemind(u1);
if (u2.Date - day == 3)
obj1.MyRemind(u2);
if (day == u1.Date)
{
Console.WriteLine("还款日期已到!");
obj2.MyDeduct(u1);
}
if (day == u2.Date)
{
Console.WriteLine("还款日期已到!");
obj2.MyDeduct(u2);
}
}
}
}
类中定义用户还款的信息:
{
private string name;
private double deposit, debt;
private int date;
public User(string name, double deposit, double debt, int date)
{
this.name = name;
this.date = date;
this.deposit = deposit;
this.debt = debt;
}
public string Name { get { return name; } }
public double Deposit { get { return deposit; } }
public double Debt { get { return debt; } }
public int Date { get { return date; } }
}
此类定义事件与委托绑定:
{
public delegate void MyDelegate(User user);
public event MyDelegate Remind_event;
public event MyDelegate Deduct_event;
public void MyRemind(User user)
{
if (Remind_event != null)
Remind_event(user);
}
public void MyDeduct(User user)
{
if (Deduct_event != null)
Deduct_event(user);
}
}
结果截图
gitee代码地址:
结果分析:
这个题目考验的是对委托和事件的熟悉程度,这个也展现了事件和委托的好处,方便使用