【发布时间】:2017-11-13 13:34:30
【问题描述】:
“通用接口”和“非通用接口中的通用方法”有什么区别? 哪一个比另一个有优势?
interface IMyInterface
{
void MyMethod<T>(T param) where T : class;
}
和
interface IMyInterface<T> where T : class
{
void MyMethod(T param)
}
【问题讨论】:
-
泛型类和具有泛型方法的非泛型类的区别是一样的。
-
接口的泛型接口实现的区别也应该是泛型的或者使用具体类型。其中泛型方法可以用作泛型,具体类型可以在运行时定义
-
这只是取决于你想如何使用方法和类型。您的具体示例几乎没有什么区别,但在其他情况下,您希望整个对象对同一类型进行操作。坦率地说,您不会看到太多具有通用方法 的接口,因为接口通常是关于整个对象的。但是,如果您只需要一个接口中的一个或多个方法,则可以将它们设为通用,原因与您在类中这样做的原因相同。有关详细信息,请参阅标记的重复项。