C# lambda 语法

问题描述 投票:0回答:1

我以前使用过 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 来编写这些内容,以便我可以理解它们?

c# lambda
1个回答
3
投票

在此示例中,Lambda 类似于方法。这是大致等效的代码:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.