大家好,我现在有这样一个需求,我有个集合,集合内会添加多种多种数据类型的对象,如int 、double、List<int>、List<string>、List<string[]>等,这里所举的类型只是一部分,我向大家请教两个问题,第一个问题,这个集合的类型如何定义,采用List<object>吗?还是ArrayList,还是说有更好的类型?第二个问题,如果集合采用List<object>或ArrayList,那么内部的对象类型就是object,我获取到object对象后,如何将其转换为正确的数据类型,因为我要对对象进行操作,这个对象类型转换过程,我不想先判断对象类型是什么,然后再对其进行转换,是否有更好的通用转换方法。
->个人认为List<object> ,不过都会发生装箱,拆箱操作。
第二个问题,如果集合采用List<object>或ArrayList,那么内部的对象类型就是object,我获取到object对象后,如何将其转换为正确的数据类型,
->用对象的gettype方法获取类型名称,通过各种parse方法转换。
采用泛型T 不用object 泛型是类型安全的且性能更好,这也是选择List不选择ArrayList的原因
public Dictionary<string, object> TempValue
{
get { return _tempValue; }
set { _tempValue = value; }
}
private object GetRealResult(string result)
{
object ovalue;
if (_tempValue.TryGetValue(result, out ovalue))
{
return ovalue;
}
else
{
return result;
}
}
假设我知道GetRealResult("a")返回的object对象是数组,我想获取到数组中第一个值,我希望通过Object[] n=GetRealResult("a")或者Object[] n=GetRealResult("a") as double[]将GetRealResult结果转为数组,然后再 获取第一个值,但这些代码都是通不过的。那么我如何获取到数组中第一个值呢,前提是我只知道是数组,不知道是int[]还是double[]或者string[]。我不想先判断是什么类型的数组,然后再对应进行转换。