【发布时间】:2017-05-11 21:19:01
【问题描述】:
我正试图向一位初级同事解释拳击。
典型的例子似乎是ArrayList。例如:
但这已被 C# 2 中的 List<T> 取代,当时引入了泛型(如 this answer 中所述)。
那么,在泛型时代,在什么情况下我会发现自己装箱值?
编辑: 明确地说,我不是在问是否仍然可以使用拳击。我在问,既然泛型已经使 ArrayList 过时了,为什么我们还要使用拳击。
编辑 2: 我认为这已经很清楚了,但我也不是在问 ArrayList 和 List<T> 之间的区别。事实上,这个问题完全基于这样一个事实,即我理解泛型意味着我们不必使用ArrayList,因此我们不需要在这些情况下对值进行装箱。
【问题讨论】:
-
如果你这样做:
object x = (object) 24;,你已经装箱了。 -
什么都没有改变 - 条件是一样的
-
ArrayList不是唯一接受对象的类,DataTable和许多其他类也是如此。这只是 .NET,有许多公共接口可以获取或返回对象,或者您自己的代码也可以这样做。 -
@TomWright -- 这与您提出问题的方式完全不同。你的标题说的是“何时”而不是“为什么”。
-
接口。尤其是与令人讨厌的过时第三方组件的接口。