为什么不能推断出THead类型?

时间:2018-12-26 19:15:30

标签: c# generics

出于学习目的,我试图编写一个通用方法(linq扩展方法),该方法采用IEnumerable,其中T是IEnumerable。在这种情况下,我编写了以下扩展方法

public static IEnumerable<THead> Head<TSource,THead>(this IEnumerable<TSource> iEnum) where TSource : IEnumerable<THead>
    {
        foreach (TSource t in iEnum)
        {
            foreach (THead u in t)
            {
                yield return u;
            }
        }
    }

List<string>上使用它时,出现以下编译器错误:

  

错误CS0411无法从用法中推断出方法XT.Head<TSource, THead>(IEnumerable<TSource>)的类型参数。尝试显式指定类型参数。

我知道此错误消息还有其他类型的答案,但是我的具体问题没有得到回答,即:

鉴于我的类型约束

where TSource : IEnumerable< THead >

以及List<string>上的用法,编译器难道不应该看到字符串(TSource)实现IEnumerable<char>(其中char应该为THead)吗?

0 个答案:

没有答案