将整个对象数组转换为字符串

我有一个类型object的数组,它们是字符串。 我想将它们转换为字符串。 这样做最快的方法是什么?

例如:我有这个object[]并且想要转换它所以它是这个string[]

更新:我认为问题是object[]上的一些对象实际上是其他对象,如整数。 我需要先将它们转换为字符串。 请将其包含在您的解决方案中。 谢谢。

可能不是最有效的方法……当对象不一定是字符串时,它具有工作的好处。

 string[] output = (from o in objectArray select o.ToString()).ToArray() 
 object[] data = new object[] { "hello", "world", "!" }; string[] stringData = data.Cast().ToArray(); 

如果对象数组包含混合元素,则可以使用ArrayConvertAll方法:

 object[] data = new object[] { "hello", 1, 2, "world", "!" }; string[] stringData = Array.ConvertAll(data, o => o.ToString()); 
 string[] output = Array.ConvertAll(objects, item => item.ToString()); 
 string[] myStringArray = myObjectArray.Cast().ToArray(); 

或者如果您使用var关键字:

 var myStringArray = myObjectArray.Cast(); 

如果您的任何字符串为null,则使用Cast不会抛出exception。

  object[] objects; .. string[] result = Array.ConvertAll(objects, new Converter(Obj2string)); public static string Obj2string(object obj) { return obj.ToString(); } 
 string[] str = new string[myObjects.Length]; for (int i = 0; i < myObjects.Length; ++i) str[i] = myObjects[i].ToString(); 

要么:

 List lst = new List(); foreach (object o in myObjects) list.Add(o.ToString()); return list.ToArray(); 
 object[] data = new object[] { "hello", "world", 1, 2 }; string[] strings = data.Select(o => o == null ? null : o.ToString()).ToArray(); 

那里疯狂的问题更新……

由于所有对象都已经是字符串,因此难以进行。 更安全的方式可能是使用以下方法:

  private static void Conversions() { var strings = Convert(new object[] {"a", "b"}); var strings2 = Convert(new object[] {}); } private static string[] Convert(IEnumerable objects) { return objects as string[] ?? new string[] {}; } 

此实现始终返回一个字符串数组,可能为空。 客户端代码可以基于该假设实现,您可以避免必须检查null的返回值。

如果数组中的某些对象是整数,则不能使用Enumerable.Cast,当执行此操作时,它将抛出InvalidCastException:

 var list = new object[] { "1", 1 }; list.Cast(); 

相反,尝试cristobalito的答案,或lambda语法等效:

 list.Select(o => o.ToString()).ToArray();