C#lambda语法

时间:2014-11-25 20:08:49

标签: c# lambda

之前我使用过lambda语法,但我一直看到以下类型的语法,不知道如何解释这个,是否有更常规的写法,所以我可以比较两者并更好地理解。

这是我见过的一个例子:

       client.ExecuteAsync(request, (response, asyncHandle) =>
        {
            Assert.NotNull(response.Content);
            Assert.Equal(val, response.Content);
            resetEvent.Set();
        });

这是另一个例子:

        client.SearchAsync("Getting", s =>
                    {
                     Assert.IsNotNull(s);
                     Assert.AreEqual(1, s.Count);
                    }, 
                    Assert.IsNull);

有没有办法在没有lambda的情况下写这些,所以我能理解它们?

由于

1 个答案:

答案 0 :(得分:2)

在这个例子中,Lambdas就像方法。这是一个大致相同的代码:

private SomeMethod(List<string> s)
{
    Assert.IsNotNull(s);
    Assert.AreEqual(1, s.Count);
}

clientSearchAsync("Getting", SomeMethod, Assert.IsNull);

简而言之,您将SomeMethod传递给SearchAsync方法作为参数,SearhAsync在其体内调用它。