使用lambda表达式进行方法调用

时间:2011-02-16 07:38:57

标签: c# lambda

请参阅我的示例代码

_service.GetCustomers((customers, error) =>
          {
             if (error != null)
             {                     
                MessageBox.Show(error.Message);
                return;
             }

             Customers = new ObservableCollection<CustomerViewModel>(customers);
             IsBusy = false;
          });

如果我要对另一个接受更多参数的函数进行类似的函数调用,那该怎么办呢。函数定义就像这样

GetCustomers(DateTime sTime, int ID,  Action<IEnumerable<CustomerViewModel>, Exception> callback)

那么如何使用lambda表达式调用上面的函数?

3 个答案:

答案 0 :(得分:2)

_service.GetCustomers(datetime, id, (customers, error) => .....
... same as before

答案 1 :(得分:2)

像以前一样简单地传递您的匿名代表以及其他参数。

_service.GetCustomers(datetime, id, (customers, error) => {

                    if (error != null)
                    {                     
                        MessageBox.Show(error.Message);
                        return;
                    }

                    Customers = new ObservableCollection<CustomerViewModel>(customers);
                    IsBusy = false;

               });

答案 2 :(得分:2)

lambda表达式是在C#2.0 Action&lt; T&gt;中引入的匿名委托的简写。它的兄弟姐妹是通用代表。每当您看到Action&lt; T&gt;类型的参数时您可以使用等效参数的lambda替换它。在这种情况下,它将是

service.GetCustomers(sometime, someId, (viewmodels, exception)=>{/*handle callback here*/});