与表达>,c#"/>

首页 > 解决方案 > C#函数与表达>

问题描述

在 C# 中,鉴于:

使用时:

var list = new List<int>();
var positives = list.AsQueryable().Where(x => x > 0);

C# 编译器如何区分这两种方法?

标签: c#

解决方案


Where接受 an的重载Expression<Func<T, bool>>是的扩展方法,IQueryable<T>并且由于IQueryable<T>extends IEnumerable<T>,由于 C# 中的重载解析机制,将首先选择它。

有关更多信息,请参阅@Jon Skeet关于该主题的文章:

如果层次结构的不同级别有两种方法,则将首先选择“更深”的方法...


推荐阅读