在运行时将对象转换为字符串数组

时间:2016-06-08 22:28:58

标签: c# casting

我的代码中有一行:

var objects = ExternalApiGetObjects(....);

在开发时我只知道ExternalApiGetObjects返回Object个实例。实际上,我确信objects变量是某种类型的数组。 我想将objects变量传递给String.Join方法,但是在运行时我得到了类似于此的异常:“类型'System.Int32 []'的对象无法转换为类型'System.String [ ]”。“

在大多数情况下,objects不是字符串数组。它可以是一个int数组,甚至是某个用户类型的数组。我只知道对象是一个数组,我想在该数组的每个项目上调用ToString()来创建一个类型为string[]的新项目。

如何将objects转换为string[]

1 个答案:

答案 0 :(得分:4)

  

OP:可能是一个   int数组,甚至是某个用户类型的数组。我才知道   对象是一个数组,我想在每个项目上调用ToString()   该数组用于创建一个类型为string []

的新数组

您可以将其强制转换为IEnumerable,然后使用Cast<T>将元素转换为对象,然后选择元素。例如:

object o = new int[] { 1, 2, 3 };
var array = (o as IEnumerable).Cast<object>().Select(x => x.ToString()).ToArray();