此问题是部分类型推断的扩展 如果无法进行部分类型推断,那么有人可以解释OrderByDescending扩展方法是如何工作的吗?请注意,当我调用OrderByDescending(m => m.DateProp)时,我不会被要求提供Type参数.
static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(
this IQueryable<TSource> source,
Expression<Func<TSource, TKey>> keySelector);
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释OrderByDescending扩展方法是如何工作的?
我当然可以.
static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>
(
this IQueryable<TSource> source,
Expression<Func<TSource, TKey>> keySelector);
Run Code Online (Sandbox Code Playgroud)
当您调用foo.OrderByDescending( x => bar )类型推断时,请执行以下操作.
TSource通过检查推断出一组边界foo.TSource为绑定集的最佳成员.叫它S.TSourceis 的值S,我们可以推断出值TKey吗?是的.我们将类型值S应用于x,然后在类型为bar的环境中推断表达式x的类型S.bar为我们提供了类型TKey,我们已经完成了.如果无法进行部分类型推断,......
部分类型推断并非不可能.相反,它没有实现.可以将该功能添加到C#中; 没人做过.
无论是否实现或部分边界集的推断,在调用中对所有类型进行完全推断都没有困难OrderByDescending.显然,我们专门设计了算法以便能够处理OrderByDescending,Join等等.
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |