日期:2014-05-17  浏览次数:21254 次

C#数组问题
ArryList al_list=new ArryList();
al_list.add(1);
al_list.add(2);
 
Int64[] id_list = (Int64[])al_list.ToArray(typeof(Int64));
这个地方就报错:源数组中至少有一个元素未能被向下转换到目标数组类型。

疑问int 类型和int64类型不是在数值大小上有区别,其它的不是一样用吗,我声明一个Int64 num=0;不是也可以用的吗

请大侠出来赐教一下

------解决方案--------------------
引用:
也不行,报指定的转换无效,我都抓狂了

因为Cast不能进行强制类型转换,Cast只能在基类和派生类直接进行转换,对于值类型的强制转换是不支持的。

2楼的方法可行,或者用这个方法:

Int64[] id_list = al_list.Cast<object>().Select(t => Convert.ToInt64(t)).ToArray();

还有一个更好的方法:

Int64[] id_list = new long[al_list.Count];
al_list.ToArray(typeof(int)).CopyTo(id_list, 0);

------解决方案--------------------

ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
Int64[] values = list.ToArray().Select(o => Convert.ToInt64(o)).ToArray();


经过测试