我想了解 LINQ 并对此事进行了一些研究,发现 IEnumerable
和 IQueryable
具有 LINQ 方法。但是,当我查看这些类型的文档时,我没有看到任何 LINQ 方法。
LINQ 方法扩展方法是否在运行时插入到 IEnumerable/IQueryable
类型中,如果是,为什么?
最佳答案
在 IEnumerable 上添加方法意味着所有从 IEnumerable 派生的类型都必须自己实现它们。现在有了扩展方法,我们可以将实现添加到接口(interface)中。
另一个副作用是,在引入 Linq 时,用 .NET 2.0 编写的代码仍然可以用 3.0 编译。否则,如果您在项目中的某处实现了 IEnumerable,那么您现在还必须在接口(interface)中实现所有新方法。
LINQ To 对象的 LINQ 方法在 Enumerable 上定义类。
此外,LINQ 搜索使用特定语法声明的方法,而不是基于接口(interface)或类的方法。您可能会找到 Edulinq有趣的 Jon Skeet 系列。
MSDN扩展方法链接。
关于c# - LINQ 方法是扩展方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138669/