6
|
Michael Puckett II · 技术社区 · 6 年前 |
1
9
c中的类型推断是 非常 很复杂——只是一次,我不会让规范出来尝试通过它,因为我知道它会变得多么可怕。
我
相信
问题是,两个参数/参数组合都不能为编译器提供足够的信息来推断
我想不出一个好的方法签名的改变 确切地 您的第一个代码可以工作,但是您可以更改调用方法的方式。 只是一点点 要使其正常工作,请在lambda表达式中指定参数类型:
当然,这样做的缺点是它不能与匿名类型一起工作。
一个解决这个缺点的方法是非常可怕的,但是它可以让你表达
如果要使用某个匿名类型的列表调用该方法,可以编写:
…最后一个参数将与匿名类型匹配。这将允许
这是一个非常可怕的黑客,我不认为我会 事实上 使用它,但是如果你真的,真的需要它来处理匿名类型,它会处理。 |
2
-1
使用
这样做的缺点是会丢失您实现的IEnumerable的特定子类。 对于您关心的特定子类,很容易实现重载:
不过,在迭代后返回IEnumerable有点可怕。 IEnumerables可能无法重新启动。 |