我试图了解以下lambda表达式的用法。该代码取自Josh Smith出色的MVVM演示代码(http://msdn.microsoft.com/zh-cn/magazine/dd419663.aspx#id0090055)。
方法称为:
AllCustomersViewModel workspace =
this.Workspaces.FirstOrDefault(vm => vm is AllCustomersViewModel)
as AllCustomersViewModel;
如在此使用的,
FirstOrDefault具有以下定义,由Visual Studio 2010标识:
public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
我不清楚
vm如何获得其类型?它没有在对象实例的其他地方定义。 FirstOrDefault(vm => vm is AllCustomersViewModel)如何满足source的FirstOrDefault参数要求?是否以某种方式暗示了这一点? 我一直在尝试使用这些资源来解析:
请您参考如下方法:
vm获得其类型,因为Workspaces是包含特定类型的集合。 vm会自动推断为该类型。 source的FirstOrDefault参数为Workspaces.这是IEnumerable<T>上的extension method,因此您在其上调用的实例将替换第一个参数。这就是方法签名中的this的意思。 