我知道编译器可以从lambda表达式转换为Predicate.
例如:
Predicate<int> p = x => true;
Run Code Online (Sandbox Code Playgroud)
很好.
但是当我想创建一个包含谓词的元组时.我试着这样做(简化版):
Tuple<Predicate<int>> t;
t = Tuple.Create(x => true);
Run Code Online (Sandbox Code Playgroud)
我收到了编译错误:
无法从用法推断出方法'System.Tuple.Create(T1)'的类型参数.尝试显式指定类型参数.
我的问题是这是一个错误,这里的歧义在哪里?
(我知道我可以通过强制转换修复它:t = Tuple.Create((Predicate<int>)(x => true));
但是我想理解为什么第一种方式不好,而且我也不想进行转换以节省输入:)