C# 使用对象而不是泛型

C# 使用对象而不是泛型,c#,generics,object,C#,Generics,Object,如果我使用的是非泛型集合、函数等,那么传递的值类型将被装箱,因为强制转换为对象(这对性能不好)。但在C#2.0中包含泛型之后,大多数传递值类型为Object的情况都被排除了 在有能力的编程中,是否仍然存在无法使用泛型完成某些任务并且仍然需要使用强制转换到对象的情况?如果是这样,你能举个例子吗?谢谢 在有能力的编程中,是否仍然存在无法用泛型完成某些任务而仍然需要使用对象转换的情况 当然有。例如,在编译时不知道类型的情况下,需要使用反射。但是,如果您在编译时知道类型,最好使用泛型进行强类型化。使用S

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

有能力的编程中,是否仍然存在无法使用泛型完成某些任务并且仍然需要使用强制转换到
对象
的情况?如果是这样,你能举个例子吗?谢谢

在有能力的编程中,是否仍然存在无法用泛型完成某些任务而仍然需要使用对象转换的情况


当然有。例如,在编译时不知道类型的情况下,需要使用反射。但是,如果您在编译时知道类型,最好使用泛型进行强类型化。

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

考虑ASP.NET的存储机制(会话和应用程序),它们具有

 Dictionary<string, object> PropertyBag;

无法用此处键入的更强的内容替换
对象

值得注意的是,在许多场景中,即使使用泛型,值类型仍然会出现装箱。“在大多数情况下,您从中受到的性能影响是如此微不足道,因此不必担心。”Dan Puzey,在一行代码中-是的。但是把这条线放到循环中,循环几千次,你就会发现它是多么的微不足道。。。
PropertyBag["currentCustomer"] = aCustmer;
PropertyBag["visits"] = 0;