如何将List <Object>转换为继承类的数组?

Mix*_*xer 1 c# arrays types

public Array ListToArray(List<Object> list)
{
   //for example i need convert list to string[] (not knowing that objects is strings)
}
Run Code Online (Sandbox Code Playgroud)

我有一个对象列表.所有相同类型的对象.但对我来说,这种类型尚不清楚.类型可以是例如String或任何其他类.我需要将此List转换为继承类的数组.我能怎么做?

slo*_*oth 9

您可以使用Array.CreateInstance在运行时创建所需类型的数组,然后使用填充它Array.Copy,例如:

public Array ListToArray(List<Object> list)
{
    // assume there is at least one element in list
    Array arr = Array.CreateInstance(list[0].GetType(), list.Count);
    Array.Copy(list.ToArray(), arr, list.Count);
    return arr;
}
Run Code Online (Sandbox Code Playgroud)

现在ListToArray(new List<object>{1,2})将返回int[]ListToArray(new List<object>{"1","2"})会返回一个string[](显然类型为Array).