这两种扩展方法是否相同,或者在使用2
中的1时存在一些危险public static T GetSomthingFromListOf<T>(this List<T> list)where T: IMyInterface
{
//do somthing that returns an item of T
}
对战
public static IMyInterface GetSomthingFromList(this List<IMyInterface> list)
{
//do somthing that returns an item of IMyInterface
}
答案 0 :(得分:1)
唯一真正的区别在于返回类型,第一个将返回类型本身并约束它以便它必须实现IMyInterface
,第二个将返回IMyInterface
实例。
当您只想公开界面的成员时,第二个是有用的;当您需要返回原始类型时,第一个是有用的,但请确保您可以在方法中将其视为IMyInterface
。
答案 1 :(得分:1)
除了@Clint回答:
1)如果你有List<ConcreteType>
的实例 - 只有通用扩展方法可用
2)如果您将struct
作为参数传递给非泛型方法,该方法需要接口 - 将发生装箱