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

C#泛型方法传委托报类型无法推断错误如何调整方法定义

问题原因

你当前的泛型方法仅声明了1个泛型参数T,约束了三个类型必须完全相同:

  • 两个输入IEnumerable的元素类型为T
  • 传入委托的入参类型为T
  • 传入委托的返回值类型为T

但你要传入的委托是Func<char, bool>,入参类型是char、返回值类型是bool,二者类型不一致,编译器无法找到同时满足T=char和T=bool的类型,因此抛出类型推断失败的错误。

修正方案

将方法的泛型参数拆分为两个,分别对应输入序列的元素类型、委托的返回值类型,让返回的IEnumerable类型和委托返回值类型对齐即可,修正后的方法定义如下:

public static IEnumerable<TResult> MyMethod<TSource, TResult>(
    IEnumerable<TSource> s1,
    IEnumerable<TSource> s2,
    Func<TSource, TResult> funcDel)
{
    // 填充你的业务逻辑
}

修正后你就可以正常传入Func<char, bool>类型的委托了,此时泛型会自动推断TSource=char、TResult=bool,方法返回值就是IEnumerable<bool>,和委托返回类型完全一致。

调用示例
Func<char, bool> sampleF = (ch) => char.IsLetter(ch);
// 可正常编译调用,result类型为IEnumerable<bool>
var result = MyMethod(new List<char>{'a','1'}, new List<char>{'b','2'}, sampleF);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:48:14