在C#中将IList转换为数组

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)