是否有任何方法將物件取消裝箱的實際類型?取消裝箱對象到其類型
基本上我給出的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