我一直在学习收集和泛型,并了解引入了泛型 提供更多类型安全的容器,并通过减少装箱/拆箱次数来提高应用性能。
但是,如果是这样的话,为什么框架允许创建类型为system.objects的泛型集合,它可以采用任何其他类型?
List<object> listObj = new List<object>();
listObj.Add(new Program1());
listObj.Add(new Program2());
提前致谢。
答案 0 :(得分:3)
是集合List<T>
是object
还不是类型? object
是一个类似于任何其他类型的类型(基本类型不会使它有任何不同),因此可以用作泛型集合的类型参数,没有任何问题,只是不要这样做当你知道具体的类型是什么时。
答案 1 :(得分:2)
我会说:为什么不呢。对象列表,您希望它以何种形式完全合法。我个人不希望框架告诉我该怎么做。可以提出建议,但是要阻止这段代码吗?否。
答案 2 :(得分:0)
如果你想要一个既不是同一类型的东西,也不想共享一个基类,也不想共享一个接口,那么你需要List<Object>
。
你很少需要这个。
但是如果你追求List<Object>
应该被禁止的想法,因为它鼓励不必要的和危险的向下倾斜,并且无论如何使用泛型,你可以指定实际可以处理的类型,不应该你去全部方式并且完全不允许使用Object
?