为什么microsoft允许列表<object> =新列表<object>()功能来自2.0?</object> </object>

时间:2014-03-24 18:15:36

标签: c# generics

我一直在学习收集和泛型,并了解引入了泛型 提供更多类型安全的容器,并通过减少装箱/拆箱次数来提高应用性能。

但是,如果是这样的话,为什么框架允许创建类型为system.objects的泛型集合,它可以采用任何其他类型?

List<object> listObj = new List<object>();

listObj.Add(new Program1());
listObj.Add(new Program2());

提前致谢。

3 个答案:

答案 0 :(得分:3)

是集合List<T>object还不是类型? object是一个类似于任何其他类型的类型(基本类型不会使它有任何不同),因此可以用作泛型集合的类型参数,没有任何问题,只是不要这样做当你知道具体的类型是什么时。

答案 1 :(得分:2)

我会说:为什么不呢。对象列表,您希望它以何种形式完全合法。我个人不希望框架告诉我该怎么做。可以提出建议,但是要阻止这段代码吗?否。

答案 2 :(得分:0)

如果你想要一个既不是同一类型的东西,也不想共享一个基类,也不想共享一个接口,那么你需要List<Object>

你很少需要这个。

但是如果你追求List<Object>应该被禁止的想法,因为它鼓励不必要的和危险的向下倾斜,并且无论如何使用泛型,你可以指定实际可以处理的类型,不应该你去全部方式并且完全不允许使用Object