Hướng dẫn sử dụng delegate c#

Dẫn nhập

Tại bài học trước, bọn họ đã cùng mọi người trong nhà tìm hiểu về ILIST TRONG C#. Hôm ni bọn họ sẽ cùng tìm hiểu về Delegate vào C#.

Bạn đang xem: Hướng dẫn sử dụng delegate c#

Nội dung

Để hiểu hiểu bài xích này tốt nhất có thể các bạn bắt buộc gồm kỹ năng và kiến thức cơ bạn dạng về những phần:

Trong bài học này, họ đã cùng mày mò các vấn đề:

Delegate là gì?Knhị báo Delegate trong C#Khởi tạo ra Delegate trong C#Multicast(đa hướng) một Delegate trong C#Cách cần sử dụng Delegate trong C#Dùng Delegate nhỏng một call-bachồng function

Delegate là gì?

Delegate vào C# tựa như nlỗi con trỏ hàm vào C hoặc C++.

Delegate là một biến chuyển loại tđắm say chiếu(references) chứa tsi chiếu cho tới một phương thơm thức.

Tsay đắm chiếu của Delegate rất có thể đổi khác runtime(Khi chương trình đã thực thi).

Delegate thường xuyên được dùng để xúc tiến những cách làm hoặc sự kiện call-back.

quý khách cứ đọc Delegate là một trở thành bình thường, biến này chứa hàm nhưng mà bạn phải call. Sau này lấy ra sài như hàm bình thường. Giá trị của thay đổi Delegate lúc này là tmê mẩn chiếu mang lại hàm. cũng có thể biến đổi runtime lúc chương trình đang hoạt động.

Delegate được dẫn xuất từ lớp System.Delegate vào C#.

Knhì báo Delegate trong C#

Knhị báo Delegate vào C# vẫn tương tự như nhỏng knhì báo một biến. Nhưng cần thêm trường đoản cú khóa Delegate nhằm khẳng định đấy là một Delegate. Đồng thời bởi vì Delegate là để tsi chiếu cho một hàm, buộc phải cũng cần được knhì báo kèm hình trạng dữ liệu trả về của với tđắm say số đầu vào của Delegate khớp ứng với hàm tđắm đuối chiếu.

Công thức:

delegate loại trả về> thương hiệu delegate> (list tha số trường hợp có>);

Ví dụ:

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

Hiện nay họ sẽ sinh sản một Delegate có tên là MyDelegate. MyDelegatetất cả kiểu dáng trả về là int, một tmê mệt số đầu vào là string.

MyDelegatelúc này rất có thể cần sử dụng làm cho hình dạng tài liệu mang lại hồ hết Delegate cho tới hàm tương ứng mẫu mã trả về với tham số đầu vào.

Khởi tạo ra và áp dụng Delegate vào C#

Lúc dạng hình Delegateđược knhị báo, đối tượng người tiêu dùng Delegateđề xuất được tạo thành với trường đoản cú khóa new và được tsay đắm chiếu đến một cách tiến hành cố thể. Phương thức này cần thuộc đẳng cấp trả về cùng ttê mê số đầu vào với Delegatevẫn tạo ra.

lúc tạo nên một Delegate, tđắm say số được truyền với biểu thức new được viết tương tự như một lời Hotline pmùi hương thức, nhưng không có tham số cho tới cách tiến hành đó. Tức là chỉ truyền thương hiệu hàm vào thôi. Delegatevẫn từ nhận định và đánh giá hàm được đưa vào gồm thuộc hình dáng dữ liệu trả ra cùng thuộc tđam mê số đầu 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ị đang convert thành int: " + valueConverted); Console.ReadLine(); static int ConvertStringToInt(string stringValue) int valueInt = 0; Int32.TryParse(stringValue, out valueInt);Console.WriteLine("Đã nghiền giao diện tài liệu thành công"); return valueInt; Kết trái chạy chương trình:

*

Để các bạn hiểu rõ hơn về đoạn code bên trên thì mình đã lý giải một chút:

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

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

Xem thêm: Tại Sao Vết Thương Chảy Nước Vàng Phải Làm Sao? Vết Thương Bị Chảy Nước Vàng Phải Làm Sao

Do MyDelegateđã khởi tạo đồng điệu vẻ bên ngoài tài liệu trả về với tđam mê số nguồn vào cùng với hàm ConvertStringToInt yêu cầu convertToInt bắt đầu vừa lòng điều kiện khởi chế tác 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 đổi mới thay thế sửa chữa đến hàm, thay đổi này tsi chiếu mang đến hàm nó hy vọng tsay mê chiếu nhằm sửa chữa thay thế khi dùng. Cách cần sử dụng y như Hotline một hàm.

Vì sao đề nghị Delegate? Lúc bạn phải sử dụng một hàm như một biến ví như tđê mê số truyền vào của một hàm, hàm call-baông xã, event…

Multicast(đa hướng) một Delegate vào C#

lúc bạn cần triển khai một chuỗi hàm với cùng thứ hạng trả về cùng cùng tmê mệt số nguồn vào cơ mà không muốn hotline những hàm tuần từ bỏ (chỉ Gọi 1 hàm 1 lần duy nhất). Hiện giờ các bạn sẽ đề xuất sử dụng cho Multicast Delegate.

Bản hóa học chúng ta cũng có thể làm một chuỗi Delegatecùng loại Delegatebằng phương pháp cần sử dụng tân oán tử +. Trong thời điểm này khi chúng ta call Delegateđã thực hiện tuần từ bỏ những Delegateđược cộng vào cùng nhau.

quý khách hoàn toàn có thể đào thải 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 quả Lúc Gọi multicast Delegate"); multicast(numberSTR); Console.ReadLine(); static int ConvertStringToInt(string stringValue) int valueInt = 0; Int32.TryParse(stringValue, out valueInt); Console.WriteLine("Đã ép hình trạng 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 sinh sản 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 tạo nên thêm 2 Delegatelà showString tham mê chiếu cho tới hàm ShowString cùng multicast là hiệu quả cộng của 2 DelegateconvertToInt và showString .

Mình Gọi Delegatemulticast nhằm thực hiện 1 lần 2 Delegatetuần tự là convertToInt cùng showString.

Console.WriteLine("Kết quả Lúc call multicast Delegate");multicast(numberSTR);khi đề nghị sa thải Delegatetrong multicast bạn chỉ bài toán trừ Delegatera

multicast = multicast - showString;

Dùng Delegate mang đến call-bachồng function

Nlỗi mình đã nói trên,Delegatecũng là 1 trong trở nên. Vậy yêu cầu mình hoàn toàn có thể truyền Delegatevào hàm có tác dụng parameter nlỗi phát triển thành thông thường. Hiện nay Delegatenày sẽ tiến hành Điện thoại tư vấn là call-baông xã function. Mục đích của vấn đề này là hàm nhấn call-baông chồng function là param rất có thể điện thoại tư vấn Delegateđược đưa vào lúc nào yêu cầu như 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ả: khi chạy cmùi hương trình:

*

Như các bạn thấy, tôi đã áp dụng Delegatecó tác dụng call-bachồng function thành công.

Ý nghĩa của ví dụ là mỗi lúc người tiêu dùng nhập lệ tên của bản thân thì vẫn Call DelegateShowString nhằm hiển thị thương hiệu người tiêu dùng vừa nhtràn vào ra screen console. Vậy từ bây giờ hàm ShowString này hoàn toàn hoàn toàn có thể được tư tưởng bởi người tiêu dùng mà lại không bắt buộc can thiệp vào code của hàm NhapVaShowTen.

Kết luận

Nội dung bài này giúp các bạn cầm được:

Delegate là gì?Khai báo Delegate trong C#Khởi tạo ra Delegate trong C#Multicast(nhiều hướng) một Delegate trong C#Cách cần sử dụng Delegate trong C#Dùng Delegate như một call-bachồng function

Bài học sau họ đang cùng tìm hiểu về EVENT TRONG C#.

Cảm ơn các bạn đang theo dõi nội dung bài viết. Hãy để lại phản hồi hoặc góp ý của bản thân để cách tân và phát triển nội dung bài viết tốt rộng. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

Xem thêm: Cách Đăng Ký Internet Banking Mbbank Và Mức Phí Khi Sử Dụng Dịch Vụ Mb Ebanking

Thảo luận

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


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