Delegates là gì
Delegate là gì?Delegate là một trong khái niệm quen thuộc trong C#, .NET, nó tương tự như như con trỏ hàm trong C++. Delegate được dùng làm tạo một bao đóng góp (encapsulation) cho bất cứ phương thức nào, tương xứng (kiểu trả về, tham số) vì chưng delegate tư tưởng ra. Delegate rất có thể triệu gọi phương thức bất kỳ nơi nào: từ đối tượng người dùng này đến đối tượng người dùng kia, trường đoản cú thread này quý phái thread kia,… Delegate có thể được truyền vào có tác dụng tham số của các phương thức.
Bạn đang xem: Delegates là gì
Dưới đó là ví dụ delegate thực hiện trong C#
public delegate int CalculateSomething(int x,int y); public static void Main(string<> args) Math m=new Math(); CalculateSomething obj = (x,y)=>x+y; int value=obj(1,2); Console.WriteLine(value); // output: 3 Delegate chất nhận được ta design class tách biệt được khai báo method và việc implement method đấy. Điều này giống như như việc ta áp dụng interface để có mang method và thiết lập phần implement của method đấy tại các class kế thừa.
interface ICalculate int apply(int x,int y); class CalculateSum implements ICalculate int apply(int x,int y) return x + y; Từ trước java 8, Java không tồn tại hình dáng khai báo này giống như như Delegate trong C#, cùng vì nghĩ rằng delegate là không phải thiết, số đông gì delegate cần, họ đã rất có thể implement bằng phương pháp sử dụng interface.
Xem thêm: Drawn Là Gì, Nghĩa Của Từ Drawn, Từ Điển Anh Việt Drawn Là Gì
Tuy nhiên, yêu cầu sử dụng trực tiếp một function bên dưới dạng tham số, bé trỏ hàm dần trở lên cụ thể trong các trường đúng theo sau:
Sử dụng event design patternMethod được sử dụng là method tĩnh, không lưu ý đến các trực thuộc tính, thủ tục khác trên đối tượng đang xúc tiến phương thức.Cần linh hoạt trong việc implement method thực hiệnVà bài toán implement đề nghị ngắn ngọn hơn nữa.Và java 8 đưa vào functional interface để cung cấp define ra độc nhất một function, điêu này giúp interface này chuyển động gần kiểu như vs delegate trong C#.
Xem thêm: Các Loại Lệnh Ato Atc Là Gì (Cụ Thể), Lệnh Ato, Atc Là Gì
FunctionalInterfacepublic interface Functional R apply(T t);Chúng ta hoàn toàn có thể viết như sau:
public delegate int CalculateSomething(int x,int y);// tương xứng vspublic BiFunction CalculateSomething;Điều này giúp Java có thể implement source code được theo phong cách Functional Programing.Java 8 đã tư vấn define sẵn một trong những function hay dùng:
public interface Consumer void accept(T t);public interface Predicate boolean test(T t);public interface Supplier T get();public interface Function R apply(T t);public interface BiFunction R apply(T t, U u);.... Với lambaTuy functional interface trong java 8 chưa thật sự như là vs khái niệm delegate trong C#, tuy thế nó cũng đã đáp ứng được tương đối nhiều nhu ước lập trình thao tác làm việc với method.