Có phải các đại biểu có cùng chức năng như gọi lại không? Hay chúng liên quan đến nhau bằng cách nào đó?Các đại biểu và gọi lại giống nhau hay tương tự?
Trả lời
quát, một đại biểu là một đối tượng sử dụng để truy cập vào một phương pháp bên ngoài để các đối tượng sở hữu phương pháp, trong khi hàm hồi quy là một biến chứa một đại biểu
trong C#, các từ ngữ được sử dụng thay thế cho nhau
(Tôi cho rằng bạn đang nói về .NET ở đây. Nếu không, vui lòng giải thích.)
Đại biểu là cách thức thực hiện thành ngữ gọi lại trong .NET - nhưng bạn không phải làm như vậy. Bạn có thể sử dụng một giao diện, ví dụ. (Đặc biệt, bạn có thể có một cuộc gọi lại với một phương pháp để gọi lỗi, và một thành công. Tất nhiên, bạn có thể lấy hai đại biểu thay thế ...)
Có rất nhiều cách sử dụng cho các đại biểu ngoài gọi lại. NET - nó phụ thuộc vào chính xác những gì bạn cho là một cuộc gọi lại, nhưng xử lý sự kiện GUI, thread-starters, bộ lọc và dự (và nhiều hơn nữa!) Trong LINQ to Objects tất cả các đại biểu sử dụng.
Chúng có liên quan đến tay. Một đại biểu là mô tả về cách các chức năng gọi lại trông giống như:
delegate void MyDelegate(string Text);
Sau đó, bạn có thể có một chức năng mà có thể mất trong callback như một tham số.
//This will result in a MessageBox with "Lalalala"
MyFunctionThatGetsTheCallbackFunctionRef(MyCallBackFunc);
void MyFunctionThatGetsTheCallbackFunctionRef(MyDelegate TheFunction){
TheFunction("Lalalala");
}
void MyCallBackFunc(string Text){
//my callback
MessageBox.Show(Text);
}
Công việc tốt bạn viết tắt 'Ref' trong' MyFunctionThatGetsTheCallbackFunctionRef' ... Sẽ không muốn tên quá dài !! – EvilGeniusJamie
A "gọi lại" là một thuật ngữ dùng để chỉ một mẫu thiết kế mã hóa, có sẵn trong bất kỳ ngôn ngữ có chức năng gợi ý, hoặc tương đồng với chức năng gợi ý (được kinda những gì một đại biểu là)
Trong mẫu này, bạn chuyển một con trỏ tới một hàm tới một hàm khác, để bên trong hàm được gọi, nó có thể "gọi lại" hàm bạn đã truyền cho nó. Bằng cách này, bạn có thể kiểm soát một đoạn lớn các hành vi bên trong của một phương thức từ bên ngoài phương thức, bằng cách chuyển con trỏ đến hàm "callback" khác nhau mỗi lần bạn gọi nó ... Ví dụ về gọi lại là khi bạn có thuật toán sắp xếp mà phải được chuyển qua một con trỏ tới một hàm sẽ "so sánh" bất kỳ cặp đối tượng tùy ý nào trong danh sách được sắp xếp, để xác định cái nào đi trước cái kia. Trên một cuộc gọi đến phương thức sắp xếp, bạn có thể chuyển một hàm gọi lại so sánh theo tên đối tượng và một lần khác chuyển một hàm so sánh theo trọng số của đối tượng, hoặc bất kỳ ...
Một đại biểu, otoh, là một cụ thể. Loại Net hoạt động như một vùng chứa đặc trưng cho một con trỏ hàm ... Trong mã được quản lý .Net, các đại biểu là cách duy nhất để tạo và sử dụng một con trỏ hàm. Vì vậy, trong. Net để làm một cuộc gọi lại, bạn đang trong thực tế đi qua một đại biểu ... Nhưng đại biểu có thể được sử dụng trong các tình huống khác ngoài callbacks. (cụ thể, các đại biểu cũng có thể được sử dụng để triển khai đa luồng từ nhóm chủ đề .Net)
Các cuộc gọi lại cũng được sử dụng để triển khai mẫu "quan sát" (được triển khai trong .Net sử dụng Sự kiện). đại biểu)
- 1. Làm thế nào để chuyển đổi đại biểu cho đại biểu giống hệt nhau?
- 2. Một cái gì đó giống như chức năng đại biểu gọi lại trong php
- 3. Thứ tự lặp lại giống nhau trên Map.keySet và Map.values?
- 4. C# thêm đối tượng (tương tự như đại biểu)
- 5. Tại sao tất cả các loại đại biểu không tương thích với nhau?
- 6. Các ký tự Unicode và Ascii có giống nhau không?
- 7. PrepareForSegue và các đại biểu
- 8. Singleton với một đại biểu: Ý tưởng hay xấu?
- 9. cách tìm sự giống nhau giữa hai đường cong và điểm số tương tự?
- 10. Nhiều chủ đề kêu gọi các chức năng tương tự
- 11. Cần một thói quen để phát hiện các chuỗi tương tự nhưng không giống nhau
- 12. Chức năng gọi lại và truyền thông liên tiến trình có giống nhau không?
- 13. Python boolean biểu và hay
- 14. Các số ngẫu nhiên giống nhau lặp lại vòng lặp
- 15. Các ký tự giống hệt nhau trong Unicode
- 16. Các đại biểu của UITableView không được gọi là
- 17. RegEx để kiểm tra xem các số trong một số có giống nhau hay theo thứ tự
- 18. Scala trả về các loại khác nhau cho các biểu thức rất giống
- 19. Các đại biểu phương pháp "clickedButtonAtIndex:" không được gọi
- 20. Rails cập nhật đại biểu gọi
- 21. Các nhóm Regex và * ký tự đại diện có hoạt động cùng nhau không?
- 22. UIScroll Xem Đại biểu không gọi ScrollViewDidEndScrollingAnimation
- 23. Các giao thức và đại biểu cho các xác ướp
- 24. Làm thế nào các functors trong Haskell và OCaml tương tự nhau?
- 25. các đại biểu vô danh trong C#
- 26. Tại sao hai đoạn mã tương tự lại tạo ra các kết quả khác nhau?
- 27. đại biểu hiệp phương sai và Contavariance
- 28. Sự khác nhau giữa functools.partial và lambda tương tự?
- 29. Các chữ và giá trị có giống nhau không?
- 30. Làm thế nào để chuyển đổi một hệ thống gọi lại dựa trên đại biểu thành dựa trên khối?
Đây sẽ là một câu hỏi phỏng vấn tuyệt vời: o) – wcm