当我将对象类型保留为集合时,泛型执行装箱/拆箱

本文关键字:执行 泛型 拆箱 集合 对象 类型 保留 | 更新日期: 2023-09-27 17:53:21

如果我有一个包含Object的列表,就像这样:

List<object> t = new List<object>();
t.Add(10);
t.Add("xyx");

在这种情况下,如果我取回列表项,我需要打开它们的盒子吗?

当我将对象类型保留为集合时,泛型执行装箱/拆箱

"拆箱"只在使用对象来保存值类型时发生。

在您的示例中,t.Add(10);确实将int值类型装箱为对象,因此在访问它时必须将其拆箱。

然而,t.Add("xyx");正在添加一个字符串引用类型,所以当你访问它时,它不会被装箱,也不需要被拆箱。

但是,在这两种情况下,您都必须值强制转换为正确的类型,以便作为该类型访问它。

如果您需要将它们视为特定类型的对象,可以。

var o = t[0]; //this is object
var i = (int)t[0]; //this is int

看情况。如果你想用它作为特定的类型,那么是的。

是的,你必须把它们拆成特定的类型