07/10/2022

Ủy quyền trong C # – thungnhamninhbinh.com

Các đại biểu trong C # tương tự như con trỏ đến các hàm, trong C hoặc trong C ++. Delegate là một biến kiểu tham chiếu chứa một tham chiếu đến một phương thức. Tham chiếu đó có thể được thay đổi trong thời gian chạy.

Đặc biệt, các đại biểu được sử dụng để triển khai các sự kiện và các phương thức gọi lại. Tất cả các đại biểu đều có nguồn gốc hoàn toàn từ lớp System.Delegate trong C #.

Khai báo ủy quyền trong C #

Khai báo Delegate trong C # xác định các phương thức có thể được tham chiếu bởi Đại biểu. Một đại biểu có thể tham chiếu đến một phương thức có cùng chữ ký với một đại diện.

Ví dụ, hãy xem xét đại biểu sau:

đại biểu công khai int MyDelegate (string s);

Đại biểu ở trên có thể được sử dụng để tham chiếu bất kỳ phương thức nào nhận tham số chuỗi đơn và trả về một biến kiểu int.

Cú pháp để khai báo một ủy nhiệm trong C # là:

ủy nhiệm

Khởi tạo Ủy quyền trong C #

Khi kiểu ủy quyền được khai báo, đối tượng ủy quyền phải được tạo bằng từ khóa mới và được liên kết với một phương thức cụ thể. Khi tạo một ủy nhiệm, đối số được truyền cho biểu thức mới được viết theo cách giống như một lệnh gọi phương thức, nhưng không có đối số nào đối với phương thức. Ví dụ:

đại biểu công cộng void printString (string s); … printString ps1 = new printString (WriteToScreen); printString ps2 = new printString (WriteToFile);

See also  Cách tải video từ PC lên Instagram

Ví dụ sau trình bày cách khai báo, khởi tạo và sử dụng các đại diện để tham chiếu đến các phương thức, nhận các đối số nguyên và trả về một giá trị nguyên.

sử dụng Hệ thống; đại biểu int NumberChanger (int n); không gian tên DelegateAppl {class TestDelegate {static int num = 10; public static int AddNum (int p) {num + = p; trả về num; } public static int MultNum (int q) {num * = q; trả về num; } public static int getNum () {return num; } static void Main (chuỗi[] args) {// tạo cá thể đại biểu NumberChanger nc1 = new NumberChanger (AddNum); NumberChanger nc2 = new NumberChanger (MultNum); // gọi phương thức sử dụng đối tượng đại biểu nc1 (25); Console.WriteLine (“Giá trị của Số: {0}”, getNum ()); nc2 (5); Console.WriteLine (“Giá trị của Số: {0}”, getNum ()); Console.ReadKey (); }}}

Khi bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau:

Giá trị của số: 35
Giá trị của số: 175

Đa hướng (đa hướng) một Đại biểu trong C #

Đối tượng đại biểu có thể được bao gồm các đại biểu khác bằng cách sử dụng toán tử “+”. Một đại biểu thành phần gọi hai Đại biểu mà nó bao gồm. Chỉ các đại biểu cùng loại mới có thể được thành lập. Toán tử “-” có thể được sử dụng để xóa một đại biểu thành phần khỏi một đại biểu đã cấu thành.

Sử dụng thuộc tính này của các đại biểu, bạn có thể tạo một danh sách các phương thức được gọi sẽ được gọi khi đại biểu được gọi. Điều này được gọi là Đa hướng của một đại biểu. Chương trình ví dụ sau minh họa Đa phương thức của một Đại biểu trong C #:

See also  Trò chơi ngoại tuyến miễn phí hay nhất dành cho Android 2021

sử dụng Hệ thống; đại biểu int NumberChanger (int n); không gian tên QTMCSharp {class Tester {static int num = 10; public static int AddNum (int p) {num + = p; trả về num; } public static int MultNum (int q) {num * = q; trả về num; } public static int getNum () {return num; } static void Main (chuỗi[] args) {// tạo cá thể đại biểu NumberChanger nc; NumberChanger nc1 = new NumberChanger (AddNum); NumberChanger nc2 = new NumberChanger (MultNum); nc = nc1; nc + = nc2; // gọi multicast nc (5); Console.WriteLine (“Giá trị của Số: {0}”, getNum ()); Console.ReadKey (); }}}

Kết quả khi chạy chương trình trên sẽ như sau:

Giá trị số: 75

Cách sử dụng Delegate trong C #

Ví dụ dưới đây sẽ chứng minh cách sử dụng ủy quyền trong C #. Đại biểu có tên printString có thể được sử dụng để tham chiếu đến một phương thức lấy một chuỗi làm đầu vào và không trả về gì.

Chúng tôi sử dụng đại biểu này để gọi hai phương thức: phương thức đầu tiên in chuỗi ra Bảng điều khiển và phương thức thứ hai in chuỗi đó vào Tệp.

sử dụng Hệ thống; sử dụng System.IO; không gian tên QTMCsharp {class TestCsharp {static FileStream fs; static StreamWriter sw; // khai báo ủy quyền public ủy nhiệm void printString (string s); // phương thức đầu tiên để in trên console public static void WriteToScreen (string str) {Console.WriteLine (“String is: {0}”, str); } // phương thức thứ hai để ghi dữ liệu vào tệp public static void WriteToFile (string s) {fs = new FileStream (“c: \ message.txt”, FileMode.Append, FileAccess.Write); sw = new StreamWriter (fs); sw.WriteLine (các); sw.Flush (); sw.Close (); fs.Close (); } // phương thức này lấy ủy nhiệm làm tham số và // sử dụng nó để gọi các phương thức nếu cần. public static void sendString (printString ps) {ps (“thungnhamninhbinh.com”); } static void Main (chuỗi[] args) {Console.WriteLine (“Ví dụ về Delegate C #:”); Console.WriteLine (“————“); printString ps1 = new printString (WriteToScreen); printString ps2 = new printString (WriteToFile); sendString (ps1); sendString (ps2); Console.ReadKey (); }}}

See also  Tóm tắt cách khóa PC Windows 11

Biên dịch và chạy chương trình C # trên để xem kết quả.

Ví dụ về C # Delegate:
————————–
Chuỗi là: thungnhamninhbinh.com

Theo Tutorialspoint

Bài trước: Trình lập chỉ mục trong C #

Bài tiếp theo: Sự kiện trong C #