我以前使用过 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 来编写这些内容,以便我可以理解它们?
在此示例中,Lambda 类似于方法。这是大致等效的代码:
private SomeMethod(List<string> s)
{
Assert.IsNotNull(s);
Assert.AreEqual(1, s.Count);
}
clientSearchAsync("Getting", SomeMethod, Assert.IsNull);
简而言之,您将 SomeMethod 作为参数传递给 SearchAsync 方法,并且 SearhAsync 在其主体中调用它。