Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa các đại biểu và sự kiện trong C #

cả việc sử dụng và các sự kiện đều đóng một vai trò quan trọng trong chương trình hướng sự kiện. Các đại biểu có thể tham khảo một phương thức và nó khá giống với con trỏ hàm trong C ++. Sự kiện thông báo rằng một số hành động đã được thực hiện. Sự khác biệt cơ bản giữa các đại biểu và sự kiện là các đại biểu giữ tham chiếu của các phương thức và sự kiện cung cấp một cách để truy cập phương thức đó bằng cách sử dụng các đại biểu.

Biểu đồ so sánh

Cơ sở để so sánhĐại biểuSự kiện
Căn bảnMột đại biểu giữ tham chiếu của một phương thức.Sự kiện này là một sự trừu tượng quá nhiều lớp được cung cấp cho các đại biểu.
Cú phápủy nhiệm return_type Boulevardate_name (tham số_list);event event_delegate event_name;
Từ khóaMột đại biểu được khai báo bằng từ khóa "đại biểu".Một sự kiện được khai báo bằng từ khóa "sự kiện".
Tờ khaiMột đại biểu được tuyên bố bên ngoài bất kỳ lớp học.Một sự kiện được tuyên bố trong một lớp.
GọiĐể gọi một phương thức, nó phải được chuyển đến đại biểu.Để gọi một phương thức, nó phải được gán cho sự kiện.
Hiệp phương sai và chống chỉ địnhHọ cung cấp sự linh hoạt cho các đại biểu.Không có khái niệm như vậy.
Trình truy cập sự kiệnKhông có khái niệm như vậy.Quản lý danh sách các xử lý sự kiện.
Phụ thuộcCác đại biểu độc lập với các sự kiện.Sự kiện không thể được tạo ra mà không có đại biểu.

Định nghĩa của đại biểu

Trong C # đại biểu được sử dụng như một con trỏ hàm để tham chiếu một phương thức. Nó đặc biệt là một đối tượng đề cập đến một phương thức được gán cho nó. Cùng một đại biểu có thể được sử dụng để tham chiếu các phương thức khác nhau, vì nó có khả năng giữ tham chiếu của các phương thức khác nhau, nhưng mỗi lần một phương thức. Phương thức nào sẽ được gọi bởi đại biểu được xác định tại thời gian chạy. Cú pháp khai báo một đại biểu như sau:

 ủy nhiệm return_type Boulevardate_name (tham số_list); 

Ở đây, return_type khai báo loại giá trị được trả về bởi phương thức, được gọi bởi đại biểu và ủy nhiệm_ tên là tên của đại biểu. Tham số_list xác định danh sách các tham số theo yêu cầu của các phương thức sẽ được gọi bởi đại biểu.

Có một số điểm quan trọng cần nhớ về các đại biểu. Nó có thể gọi bất kỳ phương thức nào khớp với chữ ký của nó và kiểu trả về. Một đại biểu có thể gọi cả phương thức cá thể hoặc phương thức tĩnh. Nếu nó gọi một phương thức cá thể, nó phải có sự trợ giúp của đối tượng để gọi phương thức đó. Các đại biểu hỗ trợ đa tuyến tức là bạn có thể xâu chuỗi các phương thức sẽ được gọi tự động khi đại biểu tham chiếu đến chúng được gọi. Bạn chỉ cần tạo một đối tượng ủy nhiệm và lần lượt gán các phương thức cho chuỗi bằng toán tử điều khiển + +. Bạn cũng có thể hủy bỏ một phương thức bằng cách sử dụng toán tử - -.

Các tính năng bổ sung thêm tính linh hoạt cho đại biểu là Hiệp phương sai và Chống chỉ định. Hiệp phương sai và Chống chỉ định cho phép điều kiện trong đó kiểu trả về và chữ ký của phương thức được chỉ định cho đại biểu khác với điều kiện của đại biểu.

  • Hiệp phương sai cho phép bạn gán một phương thức cho đại biểu trong đó kiểu trả về của phương thức là một lớp có nguồn gốc từ lớp chỉ định kiểu trả về của đại biểu.
  • Chống chỉ định cho phép bạn gán một phương thức cho đại biểu trong đó loại tham số của phương thức là một lớp cơ sở của lớp được chỉ định làm tham số của đại biểu.

Định nghĩa sự kiện

Sự kiện là hành động được thực hiện làm thay đổi trạng thái của một đối tượng. Sự kiện được khai báo bằng cách sử dụng đại biểu, không có sự hiện diện của đại biểu, bạn không thể khai báo sự kiện. Bạn có thể nói rằng một sự kiện cung cấp đóng gói cho các đại biểu. Có hai hợp chất quan trọng khi xử lý các sự kiện là xử lý sự kiện và xử lý sự kiện. Nếu các đối tượng quan tâm đến sự kiện, thì nó đăng ký một trình xử lý sự kiện cho sự kiện cụ thể đó. Và bất cứ khi nào các sự kiện được kích hoạt, xử lý sự kiện đã đăng ký được gọi. Tuyên bố của sự kiện như sau:

 event event_delegate event_name; 

Ở đây, sự kiện trực tiếp là một từ khóa hiển thị tuyên bố của một sự kiện. Tiếp theo, event_delegate hiển thị tên của đại biểu đang hỗ trợ cho sự kiện. Sau đó, event_name là tên của sự kiện

Có một số điểm quan trọng cần được ghi nhớ trong khi xử lý các sự kiện. Giống như các đại biểu, các sự kiện cũng có thể là đa hướng, tức là nhiều đối tượng được kết nối (đã đăng ký) với một trình xử lý sự kiện, phản hồi khi một sự kiện được đưa ra. Các trình xử lý sự kiện có thể được thêm vào chuỗi bằng cách sử dụng toán tử điều khiển + +, và có thể không bị vô hiệu hóa bằng cách sử dụng toán tử - Trình truy cập sự kiện có thể cung cấp cho bạn quyền kiểm soát việc thực hiện danh sách xử lý sự kiện.

Giao diện có thể chứa các sự kiện. Các sự kiện cũng có thể là trừu tượng trong khi sự kiện dựa trên accessor không thể trừu tượng. Sự kiện này có thể là ảo và bị ghi đè bởi lớp dẫn xuất.

Sự khác biệt chính giữa Đại biểu và Sự kiện trong C #

  1. Delegate là một đối tượng được sử dụng như một con trỏ hàm để giữ tham chiếu của một phương thức. Mặt khác, các sự kiện cung cấp một sự trừu tượng cho các đại biểu.
  2. Một từ khóa được yêu cầu để khai báo một đại biểu là một đại biểu trong khi đó, một từ khóa được yêu cầu để khai báo một sự kiện là sự kiện .
  3. Một đại biểu được khai báo bên ngoài một lớp trong khi đó, một sự kiện được khai báo bên trong một lớp.
  4. Để gọi một phương thức bằng cách sử dụng một đối tượng ủy nhiệm, phương thức này phải được gọi đến đối tượng ủy nhiệm. Mặt khác, để gọi một phương thức bằng cách sử dụng một đối tượng sự kiện, phương thức đó phải được tham chiếu đến đối tượng sự kiện.
  5. Hiệp phương sai và Chống chỉ định cung cấp thêm tính linh hoạt cho các đối tượng ủy nhiệm. Mặt khác, sự kiện không có khái niệm như vậy.
  6. Event Accessor xử lý danh sách các trình xử lý sự kiện trong khi đại biểu không có khái niệm như vậy.
  7. Các đại biểu độc lập với các sự kiện nhưng, các sự kiện không thể được tạo mà không có đại biểu.

Phần kết luận:

Các đại biểu rất hữu ích vì chúng hỗ trợ các sự kiện và chúng cung cấp phương tiện thực thi phương thức khi chạy. Trình truy cập sự kiện cho phép chúng ta đồng bộ hóa các trình xử lý sự kiện trong các ứng dụng đa luồng.

Top