【问题标题】:Generic Method in Non-Generic Interface [duplicate]非泛型接口中的泛型方法
【发布时间】: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)
}

【问题讨论】:

  • 泛型类和具有泛型方法的非泛型类的区别是一样的。
  • 接口的泛型接口实现的区别也应该是泛型的或者使用具体类型。其中泛型方法可以用作泛型,具体类型可以在运行时定义
  • 这只是取决于你想如何使用方法和类型。您的具体示例几乎没有什么区别,但在其他情况下,您希望整个对象对同一类型进行操作。坦率地说,您不会看到太多具有通用方法接口,因为接口通常是关于整个对象的。但是,如果您只需要一个接口中的一个或多个方法,则可以将它们设为通用,原因与您在类中这样做的原因相同。有关详细信息,请参阅标记的重复项。

标签: c# oop generics interface


【解决方案1】:

是的,非泛型方法不能强制泛型方法具有特定的类型参数。通用接口可以。

在您的IMyInterface&lt;T&gt;.MyMethod 中,T 只能与IMyInterface&lt;T&gt; 使用的类型完全相同。在IMyInterface.MyMethod 中,T 可以是任何东西(只要它遵守类型约束T : class)。

【讨论】:

  • 谢谢你的回答
猜你喜欢
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多