【发布时间】:2012-04-23 12:57:17
【问题描述】:
我注意到其他开发人员使用这种技术,但它总是让我感到困惑。今天早上我决定调查一下,在 MSDN 上发现了以下内容(来自http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.100).aspx):
public class GenericList<T> where T : Employee
{
...
}
为什么我们要使用这个方法而不是用 Employee 替换类中的所有 T 实例?对我来说,这似乎是可维护性的胜利。我可以将限制接口理解为包含来自不同继承层次结构的类的一种方式,但是继承已经以更明显的方式解决了上述问题,不是吗?
这会被认为是一个错误,还是像这样“修复”代码是一个错误?
【问题讨论】:
-
虽然现在这对我来说很有意义,但我认为我仍然看到当非泛型方法更合适时使用这种方法,这可能使我对更可接受的用途的愿景模糊。
-
@sprague:你能举个例子吗?最好来自库?
-
@Henk Holterman:可以说在某些情况下类型参数是多余的。在这种情况下,我最感兴趣的是在其约束中具有特定类的类型参数的有效情况。在我了解这种用途的情况之前,我不想对情况做出判断(感谢您和其他人,我现在知道了。)
标签: c# generics inheritance interface covariance