ob在下面的代码中是什么意思-这和item是一样的吗?
foreach (var item in allItems)
{
if (excludeItems.Exists(ob => ob.Equals(item)))
{
Console.WriteLine("Item {0} excluded",item);
}
}发布于 2011-05-11 04:07:21
ob是lambda expression的参数。因此,如果您熟悉匿名方法,它是这样的:
foreach (var item in allItems)
{
if (excludeItems.Exists(delegate (string ob) { return ob.Equals(item); })
{
Console.WriteLine("Item {0} excluded",item);
}
}这是假设ob的类型应该是string -它很可能不是。由于泛型类型推断,这将取决于excludeItems。
Lambda表达式可以更明确,因此可以这样写:
if (excludeItems.Exists((string ob) => { return ob.Equals(item); })或
if (excludeItems.Exists((string ob) => ob.Equals(item))基本上,对于可以推断其类型的单个参数和单个表达式的返回值的常见情况,lambda表达式中有几个小快捷方式。
现在,在这个特定的例子中,从lambda表达式创建的委托将为excludeItems中的每个元素调用一次(在foreach循环的每次迭代中),并且ob将具有该元素的值,直到它找到等于item的值(或者耗尽了所有元素)。
发布于 2011-05-11 04:09:38
ob表示excludeItems中的项目
https://stackoverflow.com/questions/5955808
复制相似问题