一群人指出,C#不会基于约束进行推理。这是正确的,并且与问题有关。通过检查 参数 及其对应的 形式参数类型 来进行推断,这是推断信息的唯一来源。
http://blogs.msdn.com/b/ericlippert/archive/2007/11/05/c-3-0-return-type- in??ference-does-not-work-on-member- groups.aspx
那篇文章既过时又与这个问题无关。这是过时的,因为它描述了我们在C#3.0中做出的设计决策,然后在C#4.0中撤销了该决策,主要是基于对该文章的回答。我刚刚在文章中添加了对此效果的更新。
这无关紧要,因为本文涉及 从方法组参数到泛型委托形式参数的返回类型推断 。那不是原始海报问的情况。
我要阅读的相关文章是这样的:
http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not- part-of-the- signature.aspx
更新:我听说有消息说C#7.3稍微改变了何时应用约束的规则,使上述已有十年历史的文章不再准确。有空的时候,我将回顾一下以前同事所做的更改,看看是否值得在我的新博客上发布更正;在此之前,请谨慎使用,并查看C#7.3的实际操作。