为什么微软允许list
本文关键字:object list 新增 特性 微软 为什么 | 更新日期: 2023-09-27 17:52:56
我一直在学习集合和泛型,并理解泛型的介绍提供更多类型安全的容器,并通过减少装箱/拆箱次数来提高应用程序性能。
但是,如果是这样的话,为什么框架允许创建类型system的泛型集合呢?对象可以采用任何其他类型?
List<object> listObj = new List<object>();
listObj.Add(new Program1());
listObj.Add(new Program2());
是List<T>
是object
不是一个类型?object
是一种类型,像任何其他(作为基本类型不会使它有任何不同),因此可以用作泛型集合的类型参数,这没有什么错,只是不要这样做,当你知道具体类型是什么。
我会说:为什么不呢?一个对象列表,你想要的形式是完全合法的。我个人不希望框架告诉我该做什么。做建议是可以的,但是防止这种代码?没有。
如果您想要一个既不相同类型,也不共享基类,也不共享接口的事物列表,那么您需要List<Object>
。
你很少需要这个。
但是,如果您认为应该禁止List<Object>
,因为它鼓励不必要和危险的向下转换,并且无论如何,您可以使用泛型来指定实际可以处理的类型,那么您不应该完全禁止使用Object
吗?