30/09/2018, 17:30
Cho mình hỏi về delegate trong c#
Chào các bạn, mình mới học lập trình C#, đọc đến chỗ delegate thì chẳng hiểu gì cả. Mong các bạn giải thích rõ cho mình. mình xin cảm ơn.
Bài liên quan
Delegate : cơ chế ủy quyền tương tự con trỏ hàm của C++ vậy. Nó là một kiểu dữ liệu tham chiếu được lưu trên heap
Bạn làm ơn nói rõ hơn được không, mình mới học qua c, chưa học c++ nên cũng chẳng hiểu lắm.
Nói nôm na Delegate nó là một kiểu dữ liệu tham chiếu tương tự class vậy. Nó đóng gói địa chỉ của các hàm function. Khi gọi thực hiện Delegate thì hàm được đóng gói sẽ thực hiện. Delegate nó có thể truyền vào làm tham số cho hàm còn Function thì k
Thanks bạn, mình cũng hiểu thêm được rồi
Mình có 1 bài viết khá dễ hiểu về callback và delegate trong C#, bạn có thể vào đây để đọc nhé:
Từ coder đến developer - Tôi đi code dạo – 10 Feb 15
Series C# hay ho: Callback trong C# – Delegate, Action, Predicate, Func
1. Nhắc lại về khái niệm callback Nếu chưa có khái niệm rõ ràng về callback, các bạn nên đọc bài viết về Callback trong javascript mà mình đã viết. Trong javascript, để callback, ta chỉ cần truyền …
Cảm ơn bạn. Mà bạn có bài nào về Event không cho mình xin luôn.
Event thật ra chỉ là 1 dạng wrapper của delegate thôi bạn. Thay vì gán delegate, event cho phép add, remove (+ -), ngoài ra với event thì chỉ class chứa chính event đó mới gọi nó được.
wrapper là gì vậy bạn?
cho mình hỏi chút, delegate nó hữu dụng trong hoàn cảnh nào nhỉ? như mình thấy trong ví dụ của bạn ở hàm main có đề cập:
Program p = new Program();
SayAnything sayHello = new SayAnything(p.Hello);
sayHello();
p.SaySomething(sayHello);
nhưng nếu dùng class là
Program p = new Program();
p.Hello;
cũng được mà? mình không rõ lắm mong bạn dựa trên kinh nghiệm giúp mình hiểu rõ hơn, tks
Khi một đối tượng sinh ra. Nó không thể biết về sự tồn tại và can thiệp được vào dữ liệu của đối tượng khác.
Nếu nó muốn dữ liệu bên trong nó được xử lý ở một nơi khác bên ngoài nó. Nơi mà nó không hề biết. Thì đó là chức năng chính của delegate.
Nếu nó muốn dữ liệu được tiếp tục xử lý ở nhiều nơi. Đó là chức năng của event.