Không thể kích hoạt sự kiện trong C# mà không có trình xử lý nào được gắn vào nó. Vì vậy, trước mỗi cuộc gọi nó là cần thiết để kiểm tra xem sự kiện là null.Tạo trình xử lý sự kiện C# trống
if (MyEvent != null) {
MyEvent(param1, param2);
}
Tôi muốn giữ mã của mình càng sạch càng tốt và loại bỏ các kiểm tra rỗng đó. Tôi không nghĩ rằng nó sẽ ảnh hưởng đến hiệu suất rất nhiều, ít nhất là không phải trong trường hợp của tôi.
MyEvent(param1, param2);
Hiện tại tôi giải quyết vấn đề này bằng cách thêm trình xử lý nội tuyến trống vào từng sự kiện theo cách thủ công. Đây là lỗi dễ xảy ra, vì tôi cần nhớ để làm điều đó, vv
void Initialize() {
MyEvent += new MyEvent((p1,p2) => { });
}
Có cách nào để tạo bộ xử lý trống cho tất cả các sự kiện của một lớp nhất định không?
các trick trong các câu trả lời được chấp nhận sẽ tránh được việc phải kiểm tra null nhưng sẽ không đảm bảo an toàn bộ chủ đề. xem tại đây: http://stackoverflow.com/questions/1131184/c-initializing-an-event-handler-with-a-dummy/1131204#1131204 –