Mic*_*l Z 9 .net c# arrays ilist
我想将IList转换为数组:请参阅我的代码:
IList list = new ArrayList();
list.Add(1);
Array array = new Array[list.Count];
list.CopyTo(array, 0);
Run Code Online (Sandbox Code Playgroud)
为什么我得到System.InvalidCastException:源数组中至少有一个元素无法转换为目标数组类型?假设我不能将ArrayList用作列表变量的类型,那怎么解决?
更新1:我使用.NET 1.1.所以我不能使用Generics,Linq等.我只是想收到最常见情况的结果 - 整数是作为例子给出的,我需要这个代码适用于所有类型,所以我在这里使用数组(也许我错了使用数组,但我需要,再一次,常见的情况).
Jon*_*eet 30
你创建一个数组的Array
值.1是int
,而不是Array
.你应该有:
IList list = new ArrayList();
list.Add(1);
Array array = new int[list.Count];
list.CopyTo(array, 0);
Run Code Online (Sandbox Code Playgroud)
或者,理想情况下,不要使用非泛型类型开始...使用List代替ArrayList
,IList<T>
而不是IList
等.
编辑:请注意,第三行可以很容易:
Array array = new object[list.Count];
Run Code Online (Sandbox Code Playgroud)
代替.
Joe*_*Joe 19
您可以使用Cast和ToArray:
Array array = list.Cast<int>().ToArray();
Run Code Online (Sandbox Code Playgroud)