假设我有以下代码:
public class BaseClass { }
public class DerivedClass : BaseClass { }
public void GenericMethod<T>(T input) where T : BaseClass
{
//code
}
public void NormalMethod(BaseClass input)
{
//code
}
我的问题是这两种方法有什么区别?这两种方法都有任何优点或缺点吗?为什么?
答案 0 :(得分:4)
这两种方法有什么区别?
基本上没有。
这两种方法都有任何优点或缺点吗?
当您使用非泛型版本时,最好有一点(编译时)性能改进,因为这不需要要编译的特定版本的方法。否则,我无法想到任何重要的事情。
这里使用泛型的用例可能是什么:
T
; T
需要从和类派生时; 答案 1 :(得分:1)
在您展示的代码中使用泛型是没有意义的。
另一方面,如果您要从该方法返回 T
而不是BaseClass
,则调用者可以访问T
- 特定成员仅在BaseClass
上声明的成员(除非他们转换了返回值)。