如果我有一个列表中包含Object
的列表:
List<object> t = new List<object>();
t.Add(10);
t.Add("xyx");
在这种情况下,如果我取回列表项,是否需要将它们取消包装?
答案 0 :(得分:4)
如果您使用了一个对象来保存值类型,则只会出现“取消装箱”。
在您的示例中,t.Add(10);
确实将int值类型装入对象,因此在访问它时必须将其取消装箱。
但是,t.Add("xyx");
正在添加字符串引用类型,因此它不会被装箱,并且在您访问它时不需要取消装箱。
但是,在这两种情况下,您必须将值转换为正确的类型才能以该类型访问它。
答案 1 :(得分:3)
如果您需要将它们视为特定类型的对象,是的。
var o = t[0]; //this is object
var i = (int)t[0]; //this is int
答案 2 :(得分:2)
这取决于。如果您想将其用作特定类型,那么是。否则,您可以将它们用作对象。
答案 3 :(得分:1)
是的,您必须将它们拆箱到特定类型。