Mọi người chỉ em lỗi sai với ạ. Em vừa học delegate và event và được giao bài tập như sau:
Viết 1 chương trình minh hoạ đơn giản cây ATM: khi rút tiền hoặc chuyển tiền thì hệ thống tự động thông báo.(Khi rút tiền hoặc chuyển tiền xong phát sinh sự kiện “đã rút tiền” hoặc “đã chuyển tiền”)
Nhưng em muốn in ra cả thông tin cả tài khoản nhưng khi chạy code thì lại hiện ra thông tin trắng!!! Mọi người chỉ giúp em với ạ…
Vì mới học nên em khá là mơ hồ về phần này ạ @@
Code:
class KhachHang
{
private int soTK;
private string name;
private long money;
public int SoTK
{
get
{
return soTK;
}
set
{
soTK = value;
}
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public long Money
{
get
{
return money;
}
set
{
money = value;
}
}
public void SubRutTien(EventOfProgram E)
{
E.OnChanged += new EventOfProgram.ChangedHandler(RutTien);
}
public void SubChuyenTien(EventOfProgram E)
{
E.OnChanged += new EventOfProgram.ChangedHandler(ChuyenTien);
}
public void RutTien(object sender, EventChange arg)
{
Console.WriteLine("Khang hang {0}, So tai khoan {1}\tDa rut tien thanh cong!", arg.name,arg.soTK );
}
public void ChuyenTien(object sender, EventChange arg)
{
Console.WriteLine("Khach hang{0}, So tai khoan {1}\tDa chuyen tien thanh cong!", arg.name, arg.soTK);
}
}
class EventOfProgram
{
public delegate void ChangedHandler(object sender, EventChange e);
public event ChangedHandler OnChanged;
public void Run()
{
if(OnChanged != null)
{
KhachHang k = new KhachHang();
OnChanged(this, new EventChange(k.SoTK, k.Name, k.Money));
}
}
}
public class EventChange: EventArgs
{
public readonly int soTK;
public readonly string name;
public readonly long money;
public EventChange(int TK, string Name, long Money)
{
soTK = TK;
name = Name;
money = Money;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" Welcome to ATM! ");
int chose;
KhachHang kh = new KhachHang();
Console.WriteLine("Nhap so tai khoan:");
kh.SoTK = int.Parse(Console.ReadLine());
Console.WriteLine("Nhap ho ten:");
kh.Name = Console.ReadLine();
Console.WriteLine("1. *Rut tien*");
Console.WriteLine("2. *Chuyen tien*");
Console.WriteLine("0. *Break!*");
Console.Write("Nhap su lua chon cua ban : ");
chose = int.Parse(Console.ReadLine());
do
{
if(chose == 1)
{
Console.WriteLine("Nhap so tien can rut:");
kh.Money = long.Parse(Console.ReadLine());
EventOfProgram E = new EventOfProgram();
E.Run();
kh.SubRutTien(E);
}
else if(chose == 2)
{
Console.WriteLine("Nhap so tien can chuyen:");
kh.Money = long.Parse(Console.ReadLine());
EventOfProgram E = new EventOfProgram();
kh.SubChuyenTien(E);
E.Run();
}
else if(chose == 0)
{
break;
}
} while (chose != 1 && chose != 2 && chose != 0);
Console.ReadKey();
}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?