首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#数组有关问题

2013-03-04 
C#数组问题ArryList al_listnew ArryList()al_list.add(1)al_list.add(2) Int64[] id_list (Int64[]

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();


经过测试

热点排行