“ this IEnumerable <T>项”和“ this T项”有什么区别?

时间:2019-08-03 15:12:12

标签: c# generics

我对选择以下内容感到困惑。

public static Foo<T>(this IEnumerable<T> items)
            where T : XYZ

public static Foo<T>(this T items)
       where T : IEnumerable<XYZ>

它们之间有什么区别?到目前为止,我没有发现任何区别。

XYZ是一个抽象类。

1 个答案:

答案 0 :(得分:2)

第一个示例方法是继承或为IEnumerable<XYZ>的类的实例的扩展方法,其中T(泛型,例如.Foo<XYZ>)继承了XYZ

第二种方法用于继承或为T且T继承IEnumerable<XYZ>的类的实例。

那么,差异是什么?第一种方法接受一个IEnumerable类型的实例,该实例继承了XYZ。第二种方法仅接受类型为IEnumerable的实例的XYZ