2008-11-14 22 views

Trả lời

4

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

15

(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.

4

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); 
} 
+10

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

31

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)

Các vấn đề liên quan