是否有任何方法将物件取消装箱的实际类型?取消装箱对象到其类型
基本上我给出的ArrayList
,数组列表实际上的int
或double
,也许其他类型的列表(它可以是,但它是要么全部int
或double
,没有混合)。现在,我将不得不返回List<double>
或List<int>
或其他列表,具体取决于实际类型。
public List<T> ConvertToList<T>(ArrayList arr)
{
var list1 = new List<T>();
foreach(var obj in arr)
{
// how to do the conversion?
var objT = ??
list1.Add(objT);
}
return list1;
}
有什么想法吗?
Erhm,返回o bject,这是你首先得到的。你正在做一次转换2次。 '(T)obj;'就够了。 – 2010-03-22 08:02:19
@Filip你是对的。但是这个解决方案有点宽容。这样,如果Convert不失败,也可以将字符串转换为int。 – gsharp 2010-03-22 08:30:07
但这不是被问到的问题。就个人而言,如果我期望一个ArrayList只包含盒装值,我宁可得到一个异常,如果它开始包含字符串或实际上意外类型的盒装值。只有对T位的投射实际上与问题相关。 – 2010-03-22 09:00:41