DELEGATE LÀ GÌ

Dẫn nhập

Tại bài học kinh nghiệm trước, họ đã cùng cả nhà tìm hiểu về ILIST TRONG C#. Hôm nay họ vẫn thuộc mày mò về Delegate trong C#.

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

Nội dung

Để đọc đọc bài bác này cực tốt chúng ta nên bao gồm kỹ năng cơ bạn dạng về những phần:

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

Delegate là gì?Knhị báo Delegate trong C#Khởi tạo nên Delegate vào C#Multicast(đa hướng) một Delegate vào C#Cách dùng Delegate vào C#Dùng Delegate nhỏng một call-baông chồng function

Delegate là gì?

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

Delegate là một biến đổi giao diện tsay mê chiếu(references) cất tmê mệt chiếu tới một phương thức.

Tmê mệt chiếu của Delegate rất có thể biến đổi runtime(khi lịch trình đã thực thi).

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

Quý Khách cđọng hiểu Delegate là một trở nên bình thường, phát triển thành này chứa hàm nhưng bạn cần Hotline. Sau này mang ra sài như hàm thông thường. Giá trị của trở thành Delegate hôm nay là tđê mê chiếu mang lại hàm. Có thể chuyển đổi runtime khi chương trình đang làm việc.

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

Knhị báo Delegate vào C#

Khai báo Delegate vào C# đang tương tự như như knhì báo một biến hóa. Nhưng buộc phải thêm trường đoản cú khóa Delegate nhằm xác định đó là một Delegate. Đồng thời vị Delegate là nhằm tyêu thích chiếu mang đến một hàm, yêu cầu cũng cần được knhị báo kèm thứ hạng tài liệu trả về của và tham mê số nguồn vào của Delegate tương ứng cùng với hàm tham chiếu.

Công thức:

delegate hình dáng trả về> thương hiệu delegate> (danh sách tha số nếu 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 đã tạo một Delegate có tên là MyDelegate. MyDelegatetất cả hình dáng trả về là int, một tđắm đuối số nguồn vào là string.

MyDelegatelúc này rất có thể sử dụng làm cho đẳng cấp tài liệu mang đến đa số Delegate cho tới hàm tương ứng vẻ bên ngoài trả về với tsay mê số nguồn vào.

Khởi tạo với 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 tạo ra cùng với từ bỏ khóa new với được ttê mê chiếu mang lại một cách làm cầm cố thể. Pmùi hương thức này nên cùng hình dạng trả về và tsi mê số đầu vào cùng với Delegateđã sản xuất.

khi chế tạo ra một Delegate, tđê mê số được truyền với biểu thức new được viết giống như như một lời call pmùi hương thức, cơ mà không có tsay mê 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 hàm được đưa vào gồm cùng hình trạng tài liệu trả ra và cùng tsay mê 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ị đã convert thành int: " + valueConverted); Console.ReadLine(); static int ConvertStringToInt(string stringValue) int valueInt = 0; Int32.TryParse(stringValue, out valueInt);Console.WriteLine("Đã nghiền dạng hình tài liệu thành công"); return valueInt; Kết quả chạy cmùi hương trình:

*

Để chúng ta làm rõ rộng về đoạn code bên trên thì bản thân vẫn phân tích và lý giải một chút:

Tại phía trên mình tạo một hàm ConvertStringToInt làm cho trọng trách là đưa phong cách tài liệu của một số trong những từ bỏ string lịch sự int.Mình áp dụng Delegatebằng cách chế tạo ra một đổi thay convertToInt tất cả kiểu dáng tài liệu là MyDelegate. convertToInt này bản thân new MyDelegatecùng với tmê mẩn số đầu vào là tên gọi hàm ConvertStringToInt(lưu ý chỉ tên hàm thôi).Mình tất cả thay đổi numberSTR vẻ bên ngoài string khởi tạo thành quý hiếm là 35.Mình chế tạo ra một biến hóa valueConverted hình trạng int khởi tạo ra nó bởi công dụng call DelegateconvertToInt với tmê man số truyền vào Delegatelà phát triển thành numberSTR.Kết trái xuất ra screen Console là số 35.

Nhận thấy DelegateconvertToInt bản thân sử dụng tương tự như như một hàm bình thường.

Xem thêm: " Retained Earnings Là Gì ? Định Nghĩa Và Giải Thích Ý Nghĩa

Do MyDelegatesẽ khởi chế tác đồng nhất hình dáng tài liệu trả về với tđắm đuối số đầu vào với hàm ConvertStringToInt nên convertToInt bắt đầu thỏa mãn điều kiện khởi tạo nên với áp dụng của hàm ConvertStringToInt này.

Vậy Delegatethực chất chỉ là một trong những phát triển thành sửa chữa mang đến hàm, biến chuyển này tđắm say chiếu đến hàm nó mong tđam mê chiếu để thay thế khi sử dụng. Cách cần sử dụng y như call một hàm.

Vì sao cần Delegate? lúc chúng ta cần sử dụng một hàm nhỏng một biến ví dụ như tmê man số truyền vào của một hàm, hàm call-bachồng, event…

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

Lúc bạn phải thực hiện một chuỗi hàm với thuộc hình dạng trả về cùng cùng ttê mê số nguồn vào cơ mà không thích hotline các hàm tuần từ (chỉ Hotline 1 hàm 1 lần duy nhất). Trong thời điểm này các bạn sẽ đề nghị cần sử dụng cho Multicast Delegate.

Bản chất bạn cũng có thể làm cho một chuỗi Delegatethuộc loại Delegatebằng cách cần sử dụng toán thù tử +. Trong thời điểm này khi bạn hotline Delegatevẫn thực hiện tuần tự các Delegateđược cùng vào với nhau.

quý khách hoàn toàn có thể vứt bỏ Delegatevào multicast bằng 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ị vẫn convert thành int: " + valueConverted); Console.WriteLine("Kết quả lúc Đ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 đẳng cấp tài liệu thành công"); return valueInt; static int ShowString(string stringValue) Console.WriteLine(stringValue); return 0; Kết quả: khi chạy chươ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 screen Console chuỗi truyền vào. Mình chế tạo thêm 2 Delegatelà showString tsay mê chiếu cho tới hàm ShowString với multicast là kết quả cộng của 2 DelegateconvertToInt và showString .

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

Console.WriteLine("Kết quả khi điện thoại tư vấn multicast Delegate");multicast(numberSTR);lúc đề xuất đào thải Delegatetrong multicast chúng ta chỉ bài toán trừ Delegatera

multicast = multicast - showString;

Dùng Delegate cho call-back function

Như mình đã nói trên,Delegatecũng là một biến. Vậy đề nghị mình hoàn toàn có thể truyền Delegatevào hàm có tác dụng parameter như biến đổi thông thường. Hiện giờ Delegatenày sẽ được điện thoại tư vấn là call-baông xã function. Mục đích của việc này là hàm dìm call-baông xã function là param có thể Call Delegateđược chuyển vào lúc nào nên nhỏng 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 cmùi hương trình:

*

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

Ý nghĩa của ví dụ là mỗi một khi người dùng nhtràn vào tên của chính bản thân mình thì sẽ Call DelegateShowString nhằm hiển thị thương hiệu người tiêu 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 trọn vẹn rất có thể được tư tưởng vị người dùng mà lại không đề xuất can thiệp vào code của hàm NhapVaShowTen.

Kết luận

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

Delegate là gì?Knhì báo Delegate trong C#Khởi sinh sản Delegate trong C#Multicast(đa hướng) một Delegate vào C#Cách dùng Delegate vào C#Dùng Delegate nhỏng một call-baông chồng function

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

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

Thảo luận

Nếu chúng ta tất cả ngẫu nhiên trở ngại tốt vướng mắc gì về khóa đào tạo, đừng e dè đặt câu hỏi vào phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thỏng viện hocbong2016.net.com nhằm nhận được sự hỗ trợ tự xã hội.