c# - C#函数与表达>
问题描述
在 C# 中,鉴于:
IEnumerable<T>
宣布Where(Func<T, bool>)
IQueryable<T>
延伸IEnumerable<T>
IQueryable<T>
宣布Where(Expression<Func<T, bool>>))
使用时:
var list = new List<int>();
var positives = list.AsQueryable().Where(x => x > 0);
C# 编译器如何区分这两种方法?
解决方案
Where
接受 an的重载Expression<Func<T, bool>>
是的扩展方法,IQueryable<T>
并且由于IQueryable<T>
extends IEnumerable<T>
,由于 C# 中的重载解析机制,将首先选择它。
有关更多信息,请参阅@Jon Skeet关于该主题的文章:
如果层次结构的不同级别有两种方法,则将首先选择“更深”的方法...
推荐阅读
- java - MongoDb 3.6 Compass 与 Spring 的连接
- python - ValueError:上传多个文件时要解压的值太多(预期为 2)
- android - android studio项目期间出现错误
- amazon-ec2 - 如何使用 instancetype t2.micro 创建 ec2 cloudformation 的策略
- java - addListenerForSingleValueEvent 不断重复输出
- python - python:读取文件并解释内容
- django - 是否可以使用测试数据库获得交互式 django shell?
- jquery - 将 jQuery Validation 与 Unobtrusive 一起使用时,我如何要求两个字段中的一个字段
- python - Python扫雷器计数相邻地雷错误
- r - 来自 httr POST-request 的数据是长字符串而不是表