将System.Array转换为string []

Kri*_*rip 40 .net c# arrays system.array

我有一个System.Array,我需要转换为字符串[].有没有更好的方法来做到这一点,而不仅仅是循环遍历数组,在每个元素上调用ToString,并保存到字符串[]?问题是我不一定知道元素的类型,直到运行时.

Cra*_*ntz 67

使用LINQ怎么样?

string[] foo = someObjectArray.OfType<object>().Select(o => o.ToString()).ToArray();
Run Code Online (Sandbox Code Playgroud)

  • @ Craig,TheHurt和LBushkin:`System.Array`没有实现`IEnumerable <T>`,因此大多数LINQ扩展都不起作用.但是,`IEnumerable`上有一个`OfType <T>`扩展方法(`System.Array`**实现),所以它必须是`string [] foo = someArray.OfType <object>( .).选择(O => o.ToString())ToArray的();`. (13认同)
  • 是的,将`System.Linq`添加到`using` (3认同)

Mar*_*ell 13

Array吗?或者是(例如)object[]?如果是这样:

object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Run Code Online (Sandbox Code Playgroud)

注意,任何1-d引用类型数组都应该可以转换为object[](例如,实际上Foo[]),但是值类型(例如int[])不能.所以你可以尝试:

Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Run Code Online (Sandbox Code Playgroud)

但如果它是类似的int[],你将不得不手动循环.