You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何编译器无法推断泛型类型,但智能感知却可以?

泛型方法类型参数推断问题

我定义了如下泛型类:

public class SomeClass<TA>{
  public SomeClass(Func<IList<TA>> myFunc){...}
  public OtherClass<TA, TM> CreateOther<TM>(Func<TA, Func<TM>> func) {...}
}

调用CreateOther方法时,我必须显式指定TM,否则会编译报错“无法从用法推断类型参数”,示例代码如下:

mySomeClass.CreateOther<string>(a=>a.GiveString)

//相关定义
public class StringGiver{
  public string GiveString() => "Hello";
}
//实例化代码
var creatorFunc = ()=> new List<StringGiver> {new ()};
var mySomeClass = new SomeClass(creatorFunc);

我认为应该能通过GiveString的返回类型推断出TM,而且智能感知/ReSharper会将<string>标灰,提示“类型参数规范冗余”。我没有依赖任何约束,不认为这是重复问题。

内容的提问来源于stack exchange,提问作者GrimmReaper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:42:02