以下语法是有效的VB.NET代码
Dim myCollection As New List(Of Stock)
myCollection.Add(New Stock(Guid.NewGuid, "Item1"))
myCollection.Add(New Stock(Guid.NewGuid, "Item2"))
Dim res As List(Of Stock) = myCollection.FindAll(Function(stock As Stock) As Boolean
If stock.Description = "Item2" Then
Return True
End If
Return False
End Function)
如何在C#中完成同样的事情?我试过......
myCollection.FindAll(bool delegate(Stock stock) {
if (blah blah) {
}
});
但是看起来我有点错误地构造它,因为我得到以下错误。 “错误1无效的表达术语'bool'”
答案 0 :(得分:4)
您不需要bool
关键字。返回类型是根据匿名函数中的代码自动确定的。另外,查看C#lambda表达式 - 它是同一个东西的简短形式,并且比传统的匿名方法更清晰。
lambda用法示例:
myCollection.FindAll(stock => stock.Description == "Item2");
答案 1 :(得分:4)
以下是使用lambda表达式的等效C#代码
myCollection.FindAll((stock) => stock.Description == "Item2");
使用匿名函数,上面将写如下
myCollection.FindAll(delegate(Stock stock)
{
return stock.Description == "Item2";
});
您没有像在VB.NET中那样指定匿名函数的返回类型
答案 2 :(得分:2)
它可以转换为lambda表达式。
myCollection.FindAll(s => s.Description == "Item2");