2011-10-13 57 views
12

Sự khác nhau giữa hai loại là gì?MethodInvoke đại biểu hoặc biểu thức lambda

Invoke((MethodInvoker) delegate { 
     checkedListBox1.Items.RemoveAt(i); 
     checkedListBox1.Items.Insert(i, temp + validity); 
     checkedListBox1.Update(); 
    } 
); 

vs

Invoke((MethodInvoker) 
    (
     () => 
     { 
      checkedListBox1.Items.RemoveAt(i); 
      checkedListBox1.Items.Insert(i, temp + validity); 
      checkedListBox1.Update(); 
     } 
    ) 
); 

Có lý do nào để sử dụng biểu thức lambda? Và là (MethodInvoker) đúc đại biểu và lambda vào loại MethodInvoker? Loại biểu thức nào sẽ không yêu cầu (MethodInvoker) truyền?

Trả lời

16

1) Các biểu thức lambda là hơi ngắn hơn và sạch hơn

2) Có

3) Bạn có thể sử dụng các loại hành động, như thế này:

Invoke(new Action(
    () => 
    { 
     checkedListBox1.Items.RemoveAt(i); 
     checkedListBox1.Items.Insert(i, temp + validity); 
     checkedListBox1.Update(); 
    } 
) 
); 
+0

Tôi thấy, loại Hành động. Bất kỳ sự khác biệt nào trong việc sử dụng loại Hành động so với truyền? – Jack

+0

đây là một cuộc thảo luận về hành động vs methodinvoker: http://stackoverflow.com/questions/1167771/methodinvoker-vs-action-for-control-begininvoke – hcb

+0

Chẳng phải ý thức điều này, nhờ giao phối! – TheGateKeeper

2

Hai phương pháp tương đương. Phương thức đầu tiên được gọi là một phương thức nặc danh, và là một khả năng .net 2.0 trước đó. Các lambda không nên yêu cầu một diễn viên.

Tôi thích lambda hơn, vì nó có nhiều ứng dụng phổ biến hơn trong phát triển mạng C# /. Các đại biểu vô danh không cung cấp bất cứ điều gì trên lambda. Lambda cho phép suy luận kiểu, dao động từ thuận tiện đến cần thiết trong một số trường hợp.

1

MethodInvoker cung cấp một đại biểu đơn giản mà được sử dụng để gọi một phương thức với một danh sách tham số void. Đại biểu này có thể được sử dụng khi thực hiện cuộc gọi đến phương thức Gọi của điều khiển, hoặc khi bạn cần một đại biểu đơn giản nhưng không muốn tự xác định.

một hành động, mặt khác có thể mất đến 4 thông số.

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