Skip to main content
 首页 » 编程设计

c#之在泛型集合的泛型方法上使用表达式lambda

2024年01月21日29txw1958

我试图了解以下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参数要求?是否以某种方式暗示了这一点?

  • 我一直在尝试使用这些资源来解析:

    http://msdn.microsoft.com/en-us/library/bb397687.aspx

    http://msdn.microsoft.com/en-us/library/bb397951.aspx

    请您参考如下方法:

  • vm获得其类型,因为Workspaces是包含特定类型的集合。 vm会自动推断为该类型。
  • source的FirstOrDefault参数为Workspaces.这是IEnumerable<T>上的extension method,因此您在其上调用的实例将替换第一个参数。这就是方法签名中的this的意思。