ob在以下代码中的含义是什么 - 是否与item相同?For-each循环变量
foreach (var item in allItems)
{
if (excludeItems.Exists(ob => ob.Equals(item)))
{
Console.WriteLine("Item {0} excluded",item);
}
}
ob在以下代码中的含义是什么 - 是否与item相同?For-each循环变量
foreach (var item in allItems)
{
if (excludeItems.Exists(ob => ob.Equals(item)))
{
Console.WriteLine("Item {0} excluded",item);
}
}
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表达式中的几个小快捷方式的一个共同的情况下,可以推断出其类型的单个参数以及来自单个表达式的返回值。
现在,在这个特定的情况下,从λ表达式创建的代表将被一次为每个元件在excludeItems
称为(在foreach
循环的每次迭代)和ob
将具有该元素的值,直到它找到一个值等于item
(或用完了元素)。
ob表示排除项目中的项目
Jon Skeet再次摇摆。 – Bastardo 2011-05-10 20:11:06
感谢这是非常有帮助和详细。我会阅读关于lambda表达式。 – RShar 2011-05-10 20:13:46