代码之家  ›  专栏  ›  技术社区  ›  Diskdrive

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

  •  17
  • Diskdrive  · 技术社区  · 14 年前

    我有一个类型数组 object 它们是弦。我想把它们转换成字符串。最快的方法是什么?

    object[] 想把它转换成这样吗 string[]

    更新:我认为问题在于 对象[]

    9 回复  |  直到 13 年前
        1
  •  12
  •   cristobalito    14 年前

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

    string[] output = (from o in objectArray
                       select o.ToString()).ToArray()
    
        2
  •  15
  •   Dirk Vollmar    14 年前
    object[] data = new object[] { "hello", "world", "!" };
    
    string[] stringData = data.Cast<string>().ToArray();
    

    如果对象数组包含混合元素,则可以使用 ConvertAll Array :

    object[] data = new object[] { "hello", 1, 2, "world", "!" };
    
    string[] stringData = Array.ConvertAll<object, string>(data, o => o.ToString());
    
        3
  •  13
  •   Jaroslav Jandek    14 年前
    string[] output = Array.ConvertAll(objects, item => item.ToString());
    
        4
  •  3
  •   James    14 年前
    string[] myStringArray = myObjectArray.Cast<string>().ToArray();
    

    var

    var myStringArray = myObjectArray.Cast<string>();
    

    Cast

        5
  •  1
  •   Arseny    14 年前
     object[] objects;
     ..
     string[] result = Array.ConvertAll(objects, 
            new Converter<object, string>(Obj2string));
     public static string Obj2string(object obj)
     {
        return obj.ToString();
     }
    
        6
  •  0
  •   tdammers    14 年前
    string[] str = new string[myObjects.Length];
    for (int i = 0; i < myObjects.Length; ++i)
        str[i] = myObjects[i].ToString();
    

    或:

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

    疯狂的问题更新。。。

        8
  •  0
  •   Manfred    14 年前

    因为所有的物体都已经被硬铸了。更安全的方法可能是使用以下各项:

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

    这个实现总是返回一个字符串数组,可能是空的。客户端代码可以基于这个假设来实现,并且可以避免检查返回值是否为null。

        9
  •  0
  •   theburningmonk    14 年前

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

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

    相反,请尝试cristobalito的答案,或者使用lambda语法:

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