我对选择以下内容感到困惑。
public static Foo<T>(this IEnumerable<T> items)
where T : XYZ
public static Foo<T>(this T items)
where T : IEnumerable<XYZ>
它们之间有什么区别?到目前为止,我没有发现任何区别。
XYZ
是一个抽象类。
答案 0 :(得分:2)
第一个示例方法是继承或为IEnumerable<XYZ>
的类的实例的扩展方法,其中T(泛型,例如.Foo<XYZ>
)继承了XYZ
。
第二种方法用于继承或为T且T继承IEnumerable<XYZ>
的类的实例。
那么,差异是什么?第一种方法接受一个IEnumerable
类型的实例,该实例继承了XYZ
。第二种方法仅接受类型为IEnumerable
的实例的XYZ
。