使用Object而不是泛型

时间:2011-04-02 08:02:25

标签: c# generics object

如果我使用非泛型集合,函数等,那么传递的值类型将被装箱,因为转换为Object(这对性能不利)。但是在C#2.0中包含泛型后,大多数传递值类型为Object的情况都被消除了。

主管编程中是否仍有任何情况,无法使用泛型完成某些操作并仍需要使用强制转换为Object?如果是这样,请举例说明一下?感谢。

2 个答案:

答案 0 :(得分:6)

System.Object的使用提供了灵活性(以性能为代价)。

考虑ASP.NET(Session和Application)的存储机制,它们具有

的一般结构
 Dictionary<string, object> PropertyBag;

你会像

一样使用它们
PropertyBag["currentCustomer"] = aCustmer;
PropertyBag["visits"] = 0;

无法将object替换为此处输入更强的内容。

答案 1 :(得分:4)

  

在合格的编程中是否仍有任何情况,无法使用泛型完成某些操作并且仍然需要使用强制转换来对象

当然有。例如,在编译时您不知道类型并且需要使用反射的情况。但是如果你在编译时知道类型,那么强选输入泛型是可取的。