如果我使用非泛型集合,函数等,那么传递的值类型将被装箱,因为转换为Object
(这对性能不利)。但是在C#2.0中包含泛型后,大多数传递值类型为Object
的情况都被消除了。
在主管编程中是否仍有任何情况,无法使用泛型完成某些操作并仍需要使用强制转换为Object
?如果是这样,请举例说明一下?感谢。
答案 0 :(得分:6)
System.Object
的使用提供了灵活性(以性能为代价)。
考虑ASP.NET(Session和Application)的存储机制,它们具有
的一般结构 Dictionary<string, object> PropertyBag;
你会像
一样使用它们PropertyBag["currentCustomer"] = aCustmer;
PropertyBag["visits"] = 0;
无法将object
替换为此处输入更强的内容。
答案 1 :(得分:4)
在合格的编程中是否仍有任何情况,无法使用泛型完成某些操作并且仍然需要使用强制转换来对象
当然有。例如,在编译时您不知道类型并且需要使用反射的情况。但是如果你在编译时知道类型,那么强选输入泛型是可取的。