【发布时间】:2010-05-14 11:23:21
【问题描述】:
OfType() 是如何工作的?
我阅读了this link 了解发生了什么,但 LINQ 提供程序究竟如何知道如何获取与指定类型匹配的所有对象。我知道IQueryable<T>“链接”请求,然后评估何时调用GetEnumerator()(对吗?)。
具体想知道框架是如何快速做类型比较的?我在 .NET 2.0 项目中编写了一个方法,如下所示(因为 2.0 不支持这些功能):
public IEnumerable<TResult> OfType<TResult>()
where TResult : class
{
foreach (TItem item in this.InnerList)
{
TResult matchItem = item as TResult;
if (matchItem != null)
{
yield return matchItem;
}
}
}
这是最好的实现吗?
编辑:我对这个OfType<T>() 的主要担心是它快。
【问题讨论】: