Tôi biết Sự kiện luôn được liên kết với Đại biểu. Nhưng, tôi thiếu một số sử dụng cốt lõi của Sự kiện và cố gắng hiểu điều đó.Tại sao lại sử dụng sự kiện cho những gì tôi có thể làm với Đại biểu?
Tôi đã tạo một chương trình Sự kiện đơn giản như dưới đây và chương trình hoạt động hoàn toàn tốt.
namespace CompleteRef3._0
{
delegate void someEventDelegate();
class EventTester
{
public event someEventDelegate someEvent;
public void doEvent()
{
if (someEvent != null) someEvent();
}
}
class Program
{
static void EventHandler1()
{
Console.WriteLine("Event handler 1 called..");
}
static void EventHandler2()
{
Console.WriteLine("Event handler 2 called..");
}
static void EventHandler3()
{
Console.WriteLine("Event handler 3 called..");
}
static void Main(string[] args)
{
EventTester evt = new EventTester();
evt.someEvent += EventHandler1;
evt.someEvent += EventHandler2;
evt.someEvent += EventHandler3;
evt.doEvent();
Console.ReadKey();
}
}
}
Tôi đã thay thế khai báo sự kiện với đại biểu. Đó là tôi đã thay thế dòng sự kiện công khai someEventDelegate someEvent; với someEventDelegate someEvent; về chương trình trên và tôi vẫn nhận được kết quả tương tự. Bây giờ, tôi đã nhầm lẫn lý do tại sao chúng ta cần phải sử dụng sự kiện, nếu nó chỉ có thể đạt được bởi đại biểu. Việc sử dụng thực sự của sự kiện là gì?
Chương trình sửa đổi mà không cần sự kiện như sau -
namespace CompleteRef3._0
{
delegate void someEventDelegate();
class EventTester
{
someEventDelegate someEvent;
public void doEvent()
{
if (someEvent != null) someEvent();
}
}
class Program
{
static void EventHandler1()
{
Console.WriteLine("Event handler 1 called..");
}
static void EventHandler2()
{
Console.WriteLine("Event handler 2 called..");
}
static void EventHandler3()
{
Console.WriteLine("Event handler 3 called..");
}
static void Main(string[] args)
{
EventTester evt = new EventTester();
evt.someEvent += EventHandler1;
evt.someEvent += EventHandler2;
evt.someEvent += EventHandler3;
evt.doEvent();
Console.ReadKey();
}
}
}
Tóm lại, phơi bày ngắt tham gia công khai ** đóng gói **. – Timeless