2016-06-08 62 views
1

转换的目的是字符串数组我有我的代码行:在运行时

var objects = ExternalApiGetObjects(....); 

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

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

如何将我的objects转换为string[]

+0

Cast it? 'var newObjects = objects as string [];'如果它实际上是那种类型,那么你就完成了。如果不是'newObjects'将为空。 –

+0

只是循环通过它? 'var objects = apiResult; foreach(var object in objects){...}' –

+0

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

回答

3

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

我希望我被允许使用评论说“非常整洁” – stuartd

+0

@EvanL阅读报价。 –

+0

我站好了,自己跑了几个样本。忘了'Cast ()'方法可能是多么神奇! –