将 System.Array 转换为 string[]
我有一个 System.Array,需要将其转换为 string[]。有没有比循环遍历数组、对每个元素调用 ToString 并保存到 string[] 更好的方法?问题是我在运行时之前不一定知道元素的类型。
I have a System.Array that I need to convert to string[]. Is there a better way to do this than just looping through the array, calling ToString on each element, and saving to a string[]? The problem is I don't necessarily know the type of the elements until runtime.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 LINQ 怎么样?
How about using LINQ?
它只是
数组
吗?或者是(例如)object[]
?如果是这样:请注意,任何一维引用类型数组都应该可转换为
object[]
(即使它实际上是,例如Foo[]
),但值类型(例如int[]
)则不能。所以你可以尝试:但如果它是类似
int[]
的东西,你就必须手动循环。Is it just
Array
? Or is it (for example)object[]
? If so:Note than any 1-d array of reference-types should be castable to
object[]
(even if it is actually, for example,Foo[]
), but value-types (such asint[]
) can't be. So you could try:But if it is something like
int[]
, you'll have to loop manually.您可以使用 Array.ConvertAll,如下所示:
You can use
Array.ConvertAll
, like this:简单而基本的方法;
或者只是另一种方法:您也可以使用 personNames.ToArray :
Simple and basic approach;
Or just an another approach: You can use
personNames.ToArray
too:这可能可以被压缩,但它绕过了不能使用 Cast<> 的限制。或 System.Array 类型的对象上的 Linq Select。
This can probably be compressed, but it gets around the limitation of not being able to use Cast<> or Linq Select on a System.Array type of object.