我在考虑对象参数和泛型参数之间的区别?
public foo<T>(T abc)
public foo(object abc)
实际两者都是变量,我可以将许多Object
转换成我喜欢的任何东西,因为它是基类的一切
Whatare te difeerences?
答案 0 :(得分:0)
泛型是一个复杂的主题,如果你不理解差异,我建议你深入研究。
简而言之:通过使用对象,当您希望对象是A类型但事实上它是B类时,您会将自己暴露给运行时异常。泛型通过消除创建许多e的义务来提供类型安全性。 G。函数为许多不同类型做同样的事情。通过使用基本约束,您可以创建强大而安全的解决方案。
进一步阅读:
https://msdn.microsoft.com/library/d5x73970.aspx?f=255&MSPPError=-2147217396 https://msdn.microsoft.com/en-us/library/512aeb7t.aspx
答案 1 :(得分:0)
性能 - 将值类型转换为对象时,装箱和拆箱非常昂贵。 类型安全 - 需要转换对象,你失去了编译时类型的安全性。
泛型解决了这个问题。
答案 2 :(得分:0)
由于约束,泛型非常强大,它们可以继承其他泛型类型。
所以一般差异:
类型安全:您可以发送任何内容,但在投射时,您可以在运行时使用对象获得错误。如果你使用约束,你将在编译时使用泛型获得错误。
清洁代码:您将始终使用对象强制转换。你不必用泛型来做这件事。
更好的表现(对于价值类型):没有装箱和装箱的通用装置。如果你发送值类型,它将首先放入这个内存堆(装箱)然后它将从内存堆(取消装箱)到对象的线程堆栈。