这两种方法有什么区别?
public void Add<T>(T item) where T : Product
public void Add(Product item)
根据我的理解,两者都只接受Product
类型的论据或从中派生出来。
在这里,我使用方法来举例说明问题,但同样适用于类。
答案 0 :(得分:4)
第一种方法允许你执行诸如typeof(T)
这样的事情,你不能用非泛型类型,因为对象本身可能是null(因为你需要调用{{1} })。
您还可以指定返回类型(如果它不是无效的),就像这样:
item.GetType()
另请注意,泛型方法将在编译时(以及在通过反射调用时的运行时)为每个类型创建一个方法。
答案 1 :(得分:2)
两者都相似,因为他们可以对item
执行任何操作{/ 1}}。
前者虽然也可以使用与Product
类型相关的类型。如果T
类型为T
,则可以将PremiumProduct
添加到item
,而另一个则不能,因为List<PremiumProduct>
不足以满足要求。{/ p >