Delegate là gì

Dẫn nhập

Ở bài học kinh nghiệm trước, họ vẫn với mọi người trong nhà tìm hiểu về ILIST TRONG C#. Hôm ni bọn họ đang cùng khám phá về Delegate trong C#.

Bạn đang xem: Delegate là gì

Nội dung

Để phát âm đọc bài xích này cực tốt chúng ta nên bao gồm kỹ năng cơ phiên bản về các phần:

Trong bài học này, bọn họ vẫn thuộc tò mò những vấn đề:

Delegate là gì?Knhị báo Delegate trong C#Khởi tạo thành Delegate trong C#Multicast(đa hướng) một Delegate trong C#Cách dùng Delegate vào C#Dùng Delegate nlỗi một call-back function

Delegate là gì?

Delegate vào C# tương tự như con trỏ hàm trong C hoặc C++.

Delegate là một vươn lên là kiểu tđắm say chiếu(references) chứa tsay mê chiếu cho tới một phương thơm thức.

Tđam mê chiếu của Delegate có thể biến đổi runtime(khi chương trình vẫn thực thi).

Delegate thường xuyên được dùng để xúc tiến các phương thức hoặc sự kiện call-back.

quý khách cđọng hiểu Delegate là một đổi thay bình thường, biến này chứa hàm cơ mà bạn phải call. Sau này lôi ra sử dụng như hàm thông thường. Giá trị của biến hóa Delegate từ bây giờ là tđê mê chiếu cho hàm. Có thể thay đổi runtime lúc lịch trình đang chạy.

Delegate được dẫn xuất tự lớp System.Delegate trong C#.

Knhị báo Delegate trong C#

Knhì báo Delegate vào C# sẽ tương tự như khai báo một trở nên. Nhưng nên thêm trường đoản cú khóa Delegate để khẳng định đấy là một Delegate. Đồng thời vì Delegate là để tđắm say chiếu đến một hàm, yêu cầu cũng cần phải knhị báo kèm mẫu mã tài liệu trả về của với tham mê số đầu vào của Delegate tương ứng cùng với hàm tmê man chiếu.

Công thức:

delegate hình dáng trả về> tên delegate> (danh sách tha số giả dụ có>);

Ví dụ:

delegate int MyDelegate(string s);Lưu ý: Chữ delegate viết thường

Trong thời điểm này chúng ta đang tạo một Delegate có tên là MyDelegate. MyDelegatetất cả kiểu dáng trả về là int, một tsay mê số nguồn vào là string.

MyDelegatetừ bây giờ hoàn toàn có thể dùng làm loại tài liệu mang lại đông đảo Delegate tới hàm tương ứng kiểu dáng trả về với ttê mê số đầu vào.

Khởi sản xuất cùng sử dụng Delegate vào C#

khi loại Delegateđược knhị báo, đối tượng người tiêu dùng Delegatecần được chế tạo ra cùng với từ bỏ khóa new và được tđê mê chiếu mang lại một thủ tục nuốm thể. Phương thơm thức này đề nghị thuộc mẫu mã trả về cùng tđắm đuối số đầu vào với Delegateđã chế tạo.

khi tạo thành một Delegate, tđê mê số được truyền cùng với biểu thức new được viết giống như như một lời điện thoại tư vấn phương thức, tuy vậy không tồn tại tham số cho tới thủ tục đó. Tức là chỉ truyền thương hiệu hàm vào thôi. Delegateđã từ đánh giá hàm được đưa vào tất cả cùng kiểu tài liệu trả ra cùng cùng tsi số nguồn vào hay là không.

Ví dụ:

class Program delegate int MyDelegate(string s); static void Main(string<> args) Console.OutputEncoding = Encoding.Unicode; MyDelegate convertToInt = new MyDelegate(ConvertStringToInt); string numberSTR = "35"; int valueConverted = convertToInt(numberSTR);Console.WriteLine("Giá trị vẫn convert thành int: " + valueConverted); Console.ReadLine(); static int ConvertStringToInt(string stringValue) int valueInt = 0; Int32.TryParse(stringValue, out valueInt);Console.WriteLine("Đã xay hình trạng dữ liệu thành công"); return valueInt; Kết quả chạy chương trình:

*

Để các bạn nắm rõ rộng về đoạn code bên trên thì mình đang lý giải một chút:

Tại đây mình tạo ra một hàm ConvertStringToInt có tác dụng trọng trách là đưa thứ hạng dữ liệu của một số trong những từ bỏ string thanh lịch int.Mình thực hiện Delegatebằng cách tạo một biến chuyển convertToInt tất cả phong cách dữ liệu là MyDelegate. convertToInt này mình new MyDelegatecùng với tsi mê số nguồn vào là tên gọi hàm ConvertStringToInt(chú ý chỉ tên hàm thôi).Mình tất cả vươn lên là numberSTR giao diện string khởi tạo thành quý hiếm là 35.Mình sản xuất một biến hóa valueConverted phong cách int khởi sản xuất nó bằng kết quả Call DelegateconvertToInt với tmê mệt số truyền vào Delegatelà trở thành numberSTR.Kết trái xuất ra màn hình hiển thị Console là số 35.

Nhận thấy DelegateconvertToInt bản thân thực hiện tựa như nhỏng một hàm thông thường.

Xem thêm: Cách Tính Bậc Liên Kết Cộng Hóa Trị, Liên Kết Cộng Hóa Trị

Do MyDelegateđã khởi chế tạo ra đồng điệu dạng hình dữ liệu trả về và tmê man số nguồn vào với hàm ConvertStringToInt nên convertToInt new vừa lòng ĐK khởi chế tạo với thực hiện của hàm ConvertStringToInt này.

Vậy Delegatebản chất chỉ là 1 trong những trở thành sửa chữa cho hàm, trở thành này tmê mẩn chiếu cho hàm nó hy vọng tham mê chiếu để sửa chữa thay thế khi dùng. Cách cần sử dụng y như Call một hàm.

Vì sao nên Delegate? khi bạn cần cần sử dụng một hàm nlỗi một biến ví như tmê man số truyền vào của một hàm, hàm call-baông xã, event…

Multicast(nhiều hướng) một Delegate trong C#

lúc bạn phải triển khai một chuỗi hàm cùng với cùng loại trả về với cùng tđam mê số đầu vào mà lại không muốn Call các hàm tuần từ bỏ (chỉ Gọi 1 hàm 1 lần duy nhất). Trong thời điểm này bạn sẽ đề nghị sử dụng mang lại Multicast Delegate.

Bản chất bạn cũng có thể làm một chuỗi Delegatecùng thứ hạng Delegatebằng cách dùng toán thù tử +. Hiện nay khi chúng ta điện thoại tư vấn Delegateđã tiến hành tuần từ các Delegateđược cùng vào cùng nhau.

Quý Khách rất có thể thải trừ Delegatetrong multicast bởi toán thù tử -.

Ví dụ:

class Program delegate int MyDelegate(string s); static void Main(string<> args) Console.OutputEncoding = Encoding.Unicode; MyDelegate convertToInt = new MyDelegate(ConvertStringToInt); MyDelegate showString = new MyDelegate(ShowString); MyDelegate multicast = convertToInt + showString; string numberSTR = "35"; int valueConverted = convertToInt(numberSTR);Console.WriteLine("Giá trị sẽ convert thành int: " + valueConverted); Console.WriteLine("Kết trái khi điện thoại tư vấn multicast Delegate"); multicast(numberSTR); Console.ReadLine(); static int ConvertStringToInt(string stringValue) int valueInt = 0; Int32.TryParse(stringValue, out valueInt); Console.WriteLine("Đã nghiền vẻ bên ngoài tài liệu thành công"); return valueInt; static int ShowString(string stringValue) Console.WriteLine(stringValue); return 0; Kết quả: Lúc chạy cmùi hương trình

*

Dùng lại ví dụ của phần trước.

Mình tạo ra thêm hàm ShowString với mục dích là xuất ra màn hình hiển thị Console chuỗi truyền vào. Mình sinh sản thêm 2 Delegatelà showString tham chiếu cho tới hàm ShowString và multicast là hiệu quả cùng của 2 DelegateconvertToInt và showString .

Mình Call Delegatemulticast để thực hiện 1 lần 2 Delegatetuần từ là convertToInt và showString.

Console.WriteLine("Kết quả khi điện thoại tư vấn multicast Delegate");multicast(numberSTR);Lúc bắt buộc đào thải Delegatevào multicast các bạn chỉ việc trừ Delegatera

multicast = multicast - showString;

Dùng Delegate cho call-baông xã function

Như tôi đã nói trên,Delegatecũng là một trong biến chuyển. Vậy bắt buộc bản thân hoàn toàn có thể truyền Delegatevào hàm làm parameter như trở nên thông thường. Lúc này Delegatenày sẽ tiến hành Hotline là call-bachồng function. Mục đích của vấn đề này là hàm dìm call-baông xã function là param rất có thể Hotline Delegateđược đưa vào khi nào cần nlỗi ví dụ sau:

delegate int MyDelegate(string s); static void Main(string<> args) Console.OutputEncoding = Encoding.Unicode; MyDelegate showString = new MyDelegate(ShowString); NhapVaShowTen(showString);Console.ReadLine(); static void NhapVaShowTen(MyDelegate showTen) Console.WriteLine("Mời nhập thương hiệu của bạn:"); string ten = Console.ReadLine(); showTen(ten); static int ShowString(string stringValue) Console.WriteLine(stringValue); return 0; Kết quả: Lúc chạy chương trình:

*

Như chúng ta thấy, mình đã sử dụng Delegatecó tác dụng call-baông xã function thành công.

Ý nghĩa của ví dụ là mỗi khi người tiêu dùng nhtràn vào tên của chính bản thân mình thì vẫn call DelegateShowString để hiển thị tên người dùng vừa nhập lệ ra màn hình hiển thị console. Vậy từ bây giờ hàm ShowString này hoàn toàn rất có thể được quan niệm vày người dùng cơ mà không yêu cầu can thiệp vào code của hàm NhapVaShowTen.

Kết luận

Nội dung bài bác này góp các bạn gắng được:

Delegate là gì?Knhì báo Delegate vào C#Khởi tạo Delegate vào C#Multicast(đa hướng) một Delegate vào C#Cách dùng Delegate trong C#Dùng Delegate nlỗi một call-bachồng function

Bài học sau chúng ta sẽ cùng khám phá về EVENT TRONG C#.

Cảm ơn các bạn đã quan sát và theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bản thân để cải cách và phát triển bài viết xuất sắc rộng. Đừng quên “Luyện tập – Thử thách – Không trinh nữ khó”.

Xem thêm: Hướng Dẫn Cv Xin Việc - Viết Cv Như Thế Nào Cho Đúng Chuẩn

Thảo luận

Nếu bạn gồm ngẫu nhiên trở ngại tuyệt thắc mắc gì về khóa huấn luyện, chớ e dè đặt thắc mắc vào phần BÌNH LUẬN bên dưới hoặc trong mục HỎI và ĐÁPhường. bên trên tlỗi viện mammasfigata.com.com để nhận thấy sự cung cấp từ bỏ xã hội.


Chuyên mục: Kiến thức